<?xml version="1.0" encoding="UTF-8"?>
<issues format="4" by="lint 3.0.1">

    <issue
        id="GradleCompatible"
        severity="Fatal"
        message="All gms/firebase libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 15.0.2, 15.0.1. Examples include `com.google.android.gms:play-services-vision-common:15.0.2` and `com.google.android.gms:play-services-base:15.0.1`"
        category="Correctness"
        priority="8"
        summary="Incompatible Gradle Versions"
        explanation="There are some combinations of libraries, or tools and libraries, that are incompatible, or can lead to bugs. One such incompatibility is compiling with a version of the Android support libraries that is not the latest version (or in particular, a version lower than your `targetSdkVersion`.)"
        quickfix="studio">
        <location
            file="/root/app/android/build.gradle"/>
    </issue>

    <issue
        id="GradleCompatible"
        severity="Fatal"
        message="All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 27.1.0, 26.1.0. Examples include `com.android.support:exifinterface:27.1.0` and `com.android.support:animated-vector-drawable:26.1.0`"
        category="Correctness"
        priority="8"
        summary="Incompatible Gradle Versions"
        explanation="There are some combinations of libraries, or tools and libraries, that are incompatible, or can lead to bugs. One such incompatibility is compiling with a version of the Android support libraries that is not the latest version (or in particular, a version lower than your `targetSdkVersion`.)"
        errorLine1="  implementation &quot;com.android.support:exifinterface:${safeExtGet(&apos;supportLibVersion&apos;, &apos;27.1.0&apos;)}&quot;"
        errorLine2="                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
        quickfix="studio">
        <location
            file="/root/app/android/build.gradle"
            line="54"
            column="19"/>
    </issue>

    <issue
        id="DefaultLocale"
        severity="Warning"
        message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead"
        category="Correctness"
        priority="6"
        summary="Implied default locale in case conversion"
        explanation="Calling `String#toLowerCase()` or `#toUpperCase()` **without specifying an explicit locale** is a common source of bugs. The reason for that is that those methods will use the current locale on the user&apos;s device, and even though the code appears to work correctly when you are developing the app, it will fail in some locales. For example, in the Turkish locale, the uppercase replacement for `i` is **not** `I`.&#xA;&#xA;If you want the methods to just perform ASCII replacement, for example to convert an enum name, call `String#toUpperCase(Locale.US)` instead. If you really want to use the current locale, call `String#toUpperCase(Locale.getDefault())` instead."
        url="http://developer.android.com/reference/java/util/Locale.html#default_locale"
        urls="http://developer.android.com/reference/java/util/Locale.html#default_locale"
        errorLine1="                        String.format(&quot;Unsupported command %d received by %s.&quot;, commandType, getClass().getSimpleName()));"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraViewManager.java"
            line="54"
            column="25"/>
    </issue>

    <issue
        id="SimpleDateFormat"
        severity="Warning"
        message="To get local formatting use `getDateInstance()`, `getDateTimeInstance()`, or `getTimeInstance()`, or use `new SimpleDateFormat(String template, Locale locale)` with for example `Locale.US` for ASCII dates."
        category="Correctness"
        priority="6"
        summary="Implied locale in date format"
        explanation="Almost all callers should use `getDateInstance()`, `getDateTimeInstance()`, or `getTimeInstance()` to get a ready-made instance of SimpleDateFormat suitable for the user&apos;s locale. The main reason you&apos;d create an instance this class directly is because you need to format/parse a specific machine-readable format, in which case you almost certainly want to explicitly ask for US to ensure that you get ASCII digits (rather than, say, Arabic digits).&#xA;&#xA;Therefore, you should either use the form of the SimpleDateFormat constructor where you pass in an explicit locale, such as Locale.US, or use one of the get instance methods, or suppress this error if really know what you are doing."
        url="http://developer.android.com/reference/java/text/SimpleDateFormat.html"
        urls="http://developer.android.com/reference/java/text/SimpleDateFormat.html"
        errorLine1="        String fileName = String.format(&quot;%s&quot;, new SimpleDateFormat(&quot;yyyyMMdd_HHmmss&quot;).format(new Date()));"
        errorLine2="                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraModule.java"
            line="777"
            column="47"/>
    </issue>

    <issue
        id="SimpleDateFormat"
        severity="Warning"
        message="To get local formatting use `getDateInstance()`, `getDateTimeInstance()`, or `getTimeInstance()`, or use `new SimpleDateFormat(String template, Locale locale)` with for example `Locale.US` for ASCII dates."
        category="Correctness"
        priority="6"
        summary="Implied locale in date format"
        explanation="Almost all callers should use `getDateInstance()`, `getDateTimeInstance()`, or `getTimeInstance()` to get a ready-made instance of SimpleDateFormat suitable for the user&apos;s locale. The main reason you&apos;d create an instance this class directly is because you need to format/parse a specific machine-readable format, in which case you almost certainly want to explicitly ask for US to ensure that you get ASCII digits (rather than, say, Arabic digits).&#xA;&#xA;Therefore, you should either use the form of the SimpleDateFormat constructor where you pass in an explicit locale, such as Locale.US, or use one of the get instance methods, or suppress this error if really know what you are doing."
        url="http://developer.android.com/reference/java/text/SimpleDateFormat.html"
        urls="http://developer.android.com/reference/java/text/SimpleDateFormat.html"
        errorLine1="            String timeStamp = new SimpleDateFormat(&quot;yyyyMMdd_HHmmss&quot;).format(new Date());"
        errorLine2="                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraModule.java"
            line="793"
            column="32"/>
    </issue>

    <issue
        id="SimpleDateFormat"
        severity="Warning"
        message="To get local formatting use `getDateInstance()`, `getDateTimeInstance()`, or `getTimeInstance()`, or use `new SimpleDateFormat(String template, Locale locale)` with for example `Locale.US` for ASCII dates."
        category="Correctness"
        priority="6"
        summary="Implied locale in date format"
        explanation="Almost all callers should use `getDateInstance()`, `getDateTimeInstance()`, or `getTimeInstance()` to get a ready-made instance of SimpleDateFormat suitable for the user&apos;s locale. The main reason you&apos;d create an instance this class directly is because you need to format/parse a specific machine-readable format, in which case you almost certainly want to explicitly ask for US to ensure that you get ASCII digits (rather than, say, Arabic digits).&#xA;&#xA;Therefore, you should either use the form of the SimpleDateFormat constructor where you pass in an explicit locale, such as Locale.US, or use one of the get instance methods, or suppress this error if really know what you are doing."
        url="http://developer.android.com/reference/java/text/SimpleDateFormat.html"
        urls="http://developer.android.com/reference/java/text/SimpleDateFormat.html"
        errorLine1="    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(&quot;yyyy.MM.dd G &apos;->&apos; HH:mm:ss z&quot;);"
        errorLine2="                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/org/reactnative/camera/RNCameraViewHelper.java"
            line="356"
            column="41"/>
    </issue>

    <issue
        id="GradleDependency"
        severity="Warning"
        message="A newer version of com.android.tools.build:gradle than 3.0.1 is available: 3.2.1"
        category="Correctness"
        priority="4"
        summary="Obsolete Gradle Dependency"
        explanation="This detector looks for usages of libraries where the version you are using is not the current stable release. Using older versions is fine, and there are cases where you deliberately want to stick with an older version. However, you may simply not be aware that a more recent version is available, and that is what this lint check helps find."
        errorLine1="    classpath &apos;com.android.tools.build:gradle:3.0.1&apos;"
        errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
        quickfix="studio">
        <location
            file="/root/app/android/build.gradle"
            line="15"
            column="5"/>
    </issue>

    <issue
        id="GradleDependency"
        severity="Warning"
        message="A newer version of com.google.android.gms:play-services-vision than 15.0.2 is available: 17.0.2"
        category="Correctness"
        priority="4"
        summary="Obsolete Gradle Dependency"
        explanation="This detector looks for usages of libraries where the version you are using is not the current stable release. Using older versions is fine, and there are cases where you deliberately want to stick with an older version. However, you may simply not be aware that a more recent version is available, and that is what this lint check helps find."
        errorLine1="  implementation &quot;com.google.android.gms:play-services-vision:${safeExtGet(&apos;googlePlayServicesVersion&apos;, &apos;15.0.2&apos;)}&quot;"
        errorLine2="  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
        quickfix="studio">
        <location
            file="/root/app/android/build.gradle"
            line="53"
            column="3"/>
    </issue>

    <issue
        id="GradleDependency"
        severity="Warning"
        message="A newer version of com.android.support:exifinterface than 27.1.0 is available: 28.0.0"
        category="Correctness"
        priority="4"
        summary="Obsolete Gradle Dependency"
        explanation="This detector looks for usages of libraries where the version you are using is not the current stable release. Using older versions is fine, and there are cases where you deliberately want to stick with an older version. However, you may simply not be aware that a more recent version is available, and that is what this lint check helps find."
        errorLine1="  implementation &quot;com.android.support:exifinterface:${safeExtGet(&apos;supportLibVersion&apos;, &apos;27.1.0&apos;)}&quot;"
        errorLine2="  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
        quickfix="studio">
        <location
            file="/root/app/android/build.gradle"
            line="54"
            column="3"/>
    </issue>

    <issue
        id="GradleDependency"
        severity="Warning"
        message="A newer version of com.android.support:support-v4 than 27.1.0 is available: 28.0.0"
        category="Correctness"
        priority="4"
        summary="Obsolete Gradle Dependency"
        explanation="This detector looks for usages of libraries where the version you are using is not the current stable release. Using older versions is fine, and there are cases where you deliberately want to stick with an older version. However, you may simply not be aware that a more recent version is available, and that is what this lint check helps find."
        errorLine1="  implementation &quot;com.android.support:support-v4:${safeExtGet(&apos;supportLibVersion&apos;, &apos;27.1.0&apos;)}&quot;"
        errorLine2="  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
        quickfix="studio">
        <location
            file="/root/app/android/build.gradle"
            line="56"
            column="3"/>
    </issue>

    <issue
        id="GradleDynamicVersion"
        severity="Warning"
        message="Avoid using + in version numbers; can lead to unpredictable and unrepeatable builds (com.facebook.react:react-native:+)"
        category="Correctness"
        priority="4"
        summary="Gradle Dynamic Version"
        explanation="Using `+` in dependencies lets you automatically pick up the latest available version rather than a specific, named version. However, this is not recommended; your builds are not repeatable; you may have tested with a slightly different version than what the build server used. (Using a dynamic version as the major version number is more problematic than using it in the minor version position.)"
        errorLine1="  compileOnly &apos;com.facebook.react:react-native:+&apos;"
        errorLine2="  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
        quickfix="studio">
        <location
            file="/root/app/android/build.gradle"
            line="49"
            column="3"/>
    </issue>

    <issue
        id="GradleDynamicVersion"
        severity="Warning"
        message="Avoid using + in version numbers; can lead to unpredictable and unrepeatable builds (com.facebook.infer.annotation:infer-annotation:+)"
        category="Correctness"
        priority="4"
        summary="Gradle Dynamic Version"
        explanation="Using `+` in dependencies lets you automatically pick up the latest available version rather than a specific, named version. However, this is not recommended; your builds are not repeatable; you may have tested with a slightly different version than what the build server used. (Using a dynamic version as the major version number is more problematic than using it in the minor version position.)"
        errorLine1="  compileOnly &apos;com.facebook.infer.annotation:infer-annotation:+&apos;"
        errorLine2="  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
        quickfix="studio">
        <location
            file="/root/app/android/build.gradle"
            line="50"
            column="3"/>
    </issue>

    <issue
        id="SetWorldReadable"
        severity="Warning"
        message="Setting file permissions to world-readable can be risky, review carefully"
        category="Security"
        priority="6"
        summary="`File.setReadable()` used to make file world-readable"
        explanation="Setting files world-readable is very dangerous, and likely to cause security holes in applications. It is strongly discouraged; instead, applications should use more formal mechanisms for interactions such as `ContentProvider`, `BroadcastReceiver`, and `Service`."
        errorLine1="        f.setReadable(true, false); // so mediaplayer can play it"
        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraModule.java"
            line="430"
            column="9"/>
    </issue>

    <issue
        id="SetWorldWritable"
        severity="Warning"
        message="Setting file permissions to world-writable can be risky, review carefully"
        category="Security"
        priority="6"
        summary="`File.setWritable()` used to make file world-writable"
        explanation="Setting files world-writable is very dangerous, and likely to cause security holes in applications. It is strongly discouraged; instead, applications should use more formal mechanisms for interactions such as `ContentProvider`, `BroadcastReceiver`, and `Service`."
        errorLine1="        f.setWritable(true, false); // so can clean it up"
        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraModule.java"
            line="431"
            column="9"/>
    </issue>

    <issue
        id="ObsoleteSdkInt"
        severity="Warning"
        message="Unnecessary; SDK_INT is never &lt; 16"
        category="Performance"
        priority="6"
        summary="Obsolete SDK_INT Version Check"
        explanation="This check flags version checks that are not necessary, because the `minSdkVersion` (or surrounding known API level) is already at least as high as the version checked for.&#xA;&#xA;Similarly, it also looks for resources in `-vNN` folders, such as `values-v14` where the version qualifier is less than or equal to the `minSdkVersion`, where the contents should be merged into the best folder."
        errorLine1="                final boolean needsToStopPreview = mShowingPreview &amp;&amp; Build.VERSION.SDK_INT &lt; 14;"
        errorLine2="                                                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/com/google/android/cameraview/Camera1.java"
            line="176"
            column="71"/>
    </issue>

    <issue
        id="ObsoleteSdkInt"
        severity="Warning"
        message="Unnecessary; SDK_INT is never &lt; 16"
        category="Performance"
        priority="6"
        summary="Obsolete SDK_INT Version Check"
        explanation="This check flags version checks that are not necessary, because the `minSdkVersion` (or surrounding known API level) is already at least as high as the version checked for.&#xA;&#xA;Similarly, it also looks for resources in `-vNN` folders, such as `values-v14` where the version qualifier is less than or equal to the `minSdkVersion`, where the contents should be merged into the best folder."
        errorLine1="            final boolean needsToStopPreview = mShowingPreview &amp;&amp; Build.VERSION.SDK_INT &lt; 14;"
        errorLine2="                                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/com/google/android/cameraview/Camera1.java"
            line="509"
            column="67"/>
    </issue>

    <issue
        id="ObsoleteSdkInt"
        severity="Warning"
        message="Unnecessary; SDK_INT is never &lt; 16"
        category="Performance"
        priority="6"
        summary="Obsolete SDK_INT Version Check"
        explanation="This check flags version checks that are not necessary, because the `minSdkVersion` (or surrounding known API level) is already at least as high as the version checked for.&#xA;&#xA;Similarly, it also looks for resources in `-vNN` folders, such as `values-v14` where the version qualifier is less than or equal to the `minSdkVersion`, where the contents should be merged into the best folder."
        errorLine1="        if (Build.VERSION.SDK_INT &lt; 14) {"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/com/google/android/cameraview/CameraView.java"
            line="132"
            column="13"/>
    </issue>

    <issue
        id="ObsoleteSdkInt"
        severity="Warning"
        message="Unnecessary; SDK_INT is always >= 16"
        category="Performance"
        priority="6"
        summary="Obsolete SDK_INT Version Check"
        explanation="This check flags version checks that are not necessary, because the `minSdkVersion` (or surrounding known API level) is already at least as high as the version checked for.&#xA;&#xA;Similarly, it also looks for resources in `-vNN` folders, such as `values-v14` where the version qualifier is less than or equal to the `minSdkVersion`, where the contents should be merged into the best folder."
        errorLine1="        if(Build.VERSION.SDK_INT >= 11/*HONEYCOMB*/) {"
        errorLine2="           ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/org/reactnative/camera/RNCameraView.java"
            line="96"
            column="12"/>
    </issue>

    <issue
        id="ObsoleteSdkInt"
        severity="Warning"
        message="This folder configuration (`v14`) is unnecessary; `minSdkVersion` is 16. Merge all the resources in this folder into `layout`."
        category="Performance"
        priority="6"
        summary="Obsolete SDK_INT Version Check"
        explanation="This check flags version checks that are not necessary, because the `minSdkVersion` (or surrounding known API level) is already at least as high as the version checked for.&#xA;&#xA;Similarly, it also looks for resources in `-vNN` folders, such as `values-v14` where the version qualifier is less than or equal to the `minSdkVersion`, where the contents should be merged into the best folder.">
        <location
            file="/root/app/android/src/main/res/layout-v14"/>
    </issue>

    <issue
        id="StaticFieldLeak"
        severity="Warning"
        message="This field leaks a context object"
        category="Performance"
        priority="6"
        summary="Static Field Leaks"
        explanation="A static field will leak contexts.&#xA;&#xA;Non-static inner classes have an implicit reference to their outer class. If that outer class is for example a `Fragment` or `Activity`, then this reference means that the long-running handler/loader/task will hold a reference to the activity which prevents it from getting garbage collected.&#xA;&#xA;Similarly, direct field references to activities and fragments from these longer running instances can cause leaks.&#xA;&#xA;ViewModel classes should never point to Views or non-application Contexts."
        errorLine1="  private Context mContext;"
        errorLine2="  ~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/org/reactnative/facedetector/tasks/FileFaceDetectionAsyncTask.java"
            line="38"
            column="3"/>
    </issue>

    <issue
        id="StaticFieldLeak"
        severity="Warning"
        message="This AsyncTask class should be static or leaks might occur (com.lwansbrough.RCTCamera.RCTCameraViewFinder.ReaderAsyncTask)"
        category="Performance"
        priority="6"
        summary="Static Field Leaks"
        explanation="A static field will leak contexts.&#xA;&#xA;Non-static inner classes have an implicit reference to their outer class. If that outer class is for example a `Fragment` or `Activity`, then this reference means that the long-running handler/loader/task will hold a reference to the activity which prevents it from getting garbage collected.&#xA;&#xA;Similarly, direct field references to activities and fragments from these longer running instances can cause leaks.&#xA;&#xA;ViewModel classes should never point to Views or non-application Contexts."
        errorLine1="    private class ReaderAsyncTask extends AsyncTask&lt;Void, Void, Void> {"
        errorLine2="                  ~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraViewFinder.java"
            line="326"
            column="19"/>
    </issue>

    <issue
        id="UseSparseArrays"
        severity="Warning"
        message="Use `new SparseArray&lt;CameraInfoWrapper>(...)` instead for better performance"
        category="Performance"
        priority="4"
        summary="HashMap can be replaced with SparseArray"
        explanation="For maps where the keys are of type integer, it&apos;s typically more efficient to use the Android `SparseArray` API. This check identifies scenarios where you might want to consider using `SparseArray` instead of `HashMap` for better performance.&#xA;&#xA;This is **particularly** useful when the value types are primitives like ints, where you can use `SparseIntArray` and avoid auto-boxing the values from `int` to `Integer`.&#xA;&#xA;If you need to construct a `HashMap` because you need to call an API outside of your control which requires a `Map`, you can suppress this warning using for example the `@SuppressLint` annotation."
        errorLine1="        _cameraInfos = new HashMap&lt;>();"
        errorLine2="                       ~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/com/lwansbrough/RCTCamera/RCTCamera.java"
            line="466"
            column="24"/>
    </issue>

    <issue
        id="UseSparseArrays"
        severity="Warning"
        message="Use new `SparseIntArray(...)` instead for better performance"
        category="Performance"
        priority="4"
        summary="HashMap can be replaced with SparseArray"
        explanation="For maps where the keys are of type integer, it&apos;s typically more efficient to use the Android `SparseArray` API. This check identifies scenarios where you might want to consider using `SparseArray` instead of `HashMap` for better performance.&#xA;&#xA;This is **particularly** useful when the value types are primitives like ints, where you can use `SparseIntArray` and avoid auto-boxing the values from `int` to `Integer`.&#xA;&#xA;If you need to construct a `HashMap` because you need to call an API outside of your control which requires a `Map`, you can suppress this warning using for example the `@SuppressLint` annotation."
        errorLine1="        _cameraTypeToIndex = new HashMap&lt;>();"
        errorLine2="                             ~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/com/lwansbrough/RCTCamera/RCTCamera.java"
            line="467"
            column="30"/>
    </issue>

    <issue
        id="ViewConstructor"
        severity="Warning"
        message="Custom view `CameraView` is missing constructor used by tools: `(Context)` or `(Context,AttributeSet)` or `(Context,AttributeSet,int)`"
        category="Usability"
        priority="3"
        summary="Missing View constructors for XML inflation"
        explanation="Some layout tools (such as the Android layout editor) need to find a constructor with one of the following signatures:&#xA;* `View(Context context)`&#xA;* `View(Context context, AttributeSet attrs)`&#xA;* `View(Context context, AttributeSet attrs, int defStyle)`&#xA;&#xA;If your custom view needs to perform initialization which does not apply when used in a layout editor, you can surround the given code with a check to see if `View#isInEditMode()` is false, since that method will return `false` at runtime but true within a user interface editor."
        errorLine1="public class CameraView extends FrameLayout {"
        errorLine2="             ~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/com/google/android/cameraview/CameraView.java"
            line="44"
            column="14"/>
    </issue>

    <issue
        id="ViewConstructor"
        severity="Warning"
        message="Custom view `RCTCameraViewFinder` is missing constructor used by tools: `(Context)` or `(Context,AttributeSet)` or `(Context,AttributeSet,int)`"
        category="Usability"
        priority="3"
        summary="Missing View constructors for XML inflation"
        explanation="Some layout tools (such as the Android layout editor) need to find a constructor with one of the following signatures:&#xA;* `View(Context context)`&#xA;* `View(Context context, AttributeSet attrs)`&#xA;* `View(Context context, AttributeSet attrs, int defStyle)`&#xA;&#xA;If your custom view needs to perform initialization which does not apply when used in a layout editor, you can surround the given code with a check to see if `View#isInEditMode()` is false, since that method will return `false` at runtime but true within a user interface editor."
        errorLine1="class RCTCameraViewFinder extends TextureView implements TextureView.SurfaceTextureListener, Camera.PreviewCallback {"
        errorLine2="      ~~~~~~~~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraViewFinder.java"
            line="37"
            column="7"/>
    </issue>

    <issue
        id="ViewConstructor"
        severity="Warning"
        message="Custom view `RNCameraView` is missing constructor used by tools: `(Context)` or `(Context,AttributeSet)` or `(Context,AttributeSet,int)`"
        category="Usability"
        priority="3"
        summary="Missing View constructors for XML inflation"
        explanation="Some layout tools (such as the Android layout editor) need to find a constructor with one of the following signatures:&#xA;* `View(Context context)`&#xA;* `View(Context context, AttributeSet attrs)`&#xA;* `View(Context context, AttributeSet attrs, int defStyle)`&#xA;&#xA;If your custom view needs to perform initialization which does not apply when used in a layout editor, you can surround the given code with a check to see if `View#isInEditMode()` is false, since that method will return `false` at runtime but true within a user interface editor."
        errorLine1="public class RNCameraView extends CameraView implements LifecycleEventListener, BarCodeScannerAsyncTaskDelegate, FaceDetectorAsyncTaskDelegate,"
        errorLine2="             ~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/org/reactnative/camera/RNCameraView.java"
            line="37"
            column="14"/>
    </issue>

    <issue
        id="ClickableViewAccessibility"
        severity="Warning"
        message="Custom view `RCTCameraViewFinder` overrides `onTouchEvent` but not `performClick`"
        category="Accessibility"
        priority="6"
        summary="Accessibility in Custom Views"
        explanation="If a `View` that overrides `onTouchEvent` or uses an `OnTouchListener` does not also implement `performClick` and call it when clicks are detected, the `View` may not handle accessibility actions properly. Logic handling the click actions should ideally be placed in `View#performClick` as some accessibility services invoke `performClick` when a click action should occur."
        errorLine1="    public boolean onTouchEvent(MotionEvent event) {"
        errorLine2="                   ~~~~~~~~~~~~">
        <location
            file="/root/app/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraViewFinder.java"
            line="421"
            column="20"/>
    </issue>

</issues>
