| <?xml version="1.0" encoding="UTF-8"?> |
| <issues format="5" by="lint 4.2.0-alpha15" client="gradle" variant="debug" version="4.2.0-alpha15"> |
| |
| <issue |
| id="ObsoleteLintCustomCheck" |
| message="Lint found an issue registry (`androidx.fragment.lint.FragmentIssueRegistry`) which is older than the current API level; these checks may not work correctly.

Recompile the checks against the latest version. Custom check API version is 6 (3.6), current lint API level is 8 (4.1)"> |
| <location |
| file="../../../../../../../home/jeffrygaston/.gradle/caches/transforms-2/files-2.1/0fb1dd8bbeedc8c68a82b59d7323ab90/fragment-1.2.3/jars/lint.jar"/> |
| </issue> |
| |
| <issue |
| id="ObsoleteLintCustomCheck" |
| message="Lint found an issue registry (`androidx.fragment.testing.lint.FragmentTestingIssueRegistry`) which is older than the current API level; these checks may not work correctly.

Recompile the checks against the latest version. Custom check API version is 6 (3.6), current lint API level is 8 (4.1)"> |
| <location |
| file="../../../../../../../home/jeffrygaston/.gradle/caches/transforms-2/files-2.1/a2a294247f89fd5339b38ec4d63066da/fragment-testing-1.2.3/jars/lint.jar"/> |
| </issue> |
| |
| <issue |
| id="ScopedStorage" |
| message="WRITE_EXTERNAL_STORAGE no longer provides write access when targeting Android 11+, even when using `requestLegacyExternalStorage`" |
| errorLine1=" <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />" |
| errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/AndroidManifest.xml" |
| line="21" |
| column="36"/> |
| </issue> |
| |
| <issue |
| id="DefaultLocale" |
| message="Implicitly using the default locale is a common source of bugs: Use `toUpperCase(Locale)` instead. For strings meant to be internal use `Locale.ROOT`, otherwise `Locale.getDefault()`." |
| errorLine1=" CaptureMode captureMode = CaptureMode.valueOf(captureModeString.toUpperCase());" |
| errorLine2=" ~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CameraViewFragment.java" |
| line="148" |
| column="81"/> |
| </issue> |
| |
| <issue |
| id="NonConstantResourceId" |
| message="Resource IDs will be non-final in Android Gradle Plugin version 7.0, avoid using them in switch case statements" |
| errorLine1=" case R.id.camera_view:" |
| errorLine2=" ~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/MainActivity.java" |
| line="106" |
| column="18"/> |
| </issue> |
| |
| <issue |
| id="NonConstantResourceId" |
| message="Resource IDs will be non-final in Android Gradle Plugin version 7.0, avoid using them in switch case statements" |
| errorLine1=" case R.id.preview_view:" |
| errorLine2=" ~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/MainActivity.java" |
| line="109" |
| column="18"/> |
| </issue> |
| |
| <issue |
| id="NonConstantResourceId" |
| message="Resource IDs will be non-final in Android Gradle Plugin version 7.0, avoid using them in switch case statements" |
| errorLine1=" case R.id.camera_controller:" |
| errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/MainActivity.java" |
| line="112" |
| column="18"/> |
| </issue> |
| |
| <issue |
| id="UnsafeNewApiCall" |
| message="This call is to a method from API 23, the call containing class androidx.camera.integration.view.MainActivity is not annotated with @RequiresApi(x) where x is at least 23. Either annotate the containing class with at least @RequiresApi(23) or move the call to a static method in a wrapper class annotated with at least @RequiresApi(23)." |
| errorLine1=" requestPermissions(REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS);" |
| errorLine2=" ~~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/MainActivity.java" |
| line="75" |
| column="21"/> |
| </issue> |
| |
| <issue |
| id="RestrictedApi" |
| message="CameraView.getMaxVideoDuration can only be called from within the same library group (groupId=androidx.camera)" |
| errorLine1=" if (mCameraView.getMaxVideoDuration() > 0) {" |
| errorLine2=" ~~~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CaptureViewOnTouchListener.java" |
| line="82" |
| column="45"/> |
| </issue> |
| |
| <issue |
| id="RestrictedApi" |
| message="CameraView.getMaxVideoDuration can only be called from within the same library group (groupId=androidx.camera)" |
| errorLine1=" sendEmptyMessageDelayed(RELEASE, mCameraView.getMaxVideoDuration());" |
| errorLine2=" ~~~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CaptureViewOnTouchListener.java" |
| line="83" |
| column="78"/> |
| </issue> |
| |
| <issue |
| id="RestrictedApi" |
| message="CameraView.getMaxVideoDuration can only be called from within the same library group (groupId=androidx.camera)" |
| errorLine1=" && (mCameraView.getMaxVideoDuration() <= 0" |
| errorLine2=" ~~~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CaptureViewOnTouchListener.java" |
| line="198" |
| column="41"/> |
| </issue> |
| |
| <issue |
| id="RestrictedApi" |
| message="CameraView.getMaxVideoDuration can only be called from within the same library group (groupId=androidx.camera)" |
| errorLine1=" || deltaSinceDownEvent() < mCameraView.getMaxVideoDuration())) {" |
| errorLine2=" ~~~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CaptureViewOnTouchListener.java" |
| line="199" |
| column="64"/> |
| </issue> |
| |
| <issue |
| id="RestrictedApi" |
| message="CameraView.getMaxVideoDuration can only be called from within the same library group (groupId=androidx.camera)" |
| errorLine1=" } else if ((mCameraView.getMaxVideoDuration() <= 0" |
| errorLine2=" ~~~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CaptureViewOnTouchListener.java" |
| line="208" |
| column="41"/> |
| </issue> |
| |
| <issue |
| id="RestrictedApi" |
| message="CameraView.getMaxVideoDuration can only be called from within the same library group (groupId=androidx.camera)" |
| errorLine1=" || deltaSinceDownEvent() < mCameraView.getMaxVideoDuration())) {" |
| errorLine2=" ~~~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CaptureViewOnTouchListener.java" |
| line="209" |
| column="64"/> |
| </issue> |
| |
| <issue |
| id="SwitchIntDef" |
| message="Switch statement on an `int` with known associated constant missing case `ImageCapture.FLASH_MODE_UNKNOWN`" |
| errorLine1=" switch (mCameraController.getImageCaptureFlashMode()) {" |
| errorLine2=" ~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CameraControllerFragment.java" |
| line="178" |
| column="13"/> |
| </issue> |
| |
| <issue |
| id="SwitchIntDef" |
| message="Switch statement on an `int` with known associated constant missing case `ImageCapture.FLASH_MODE_UNKNOWN`" |
| errorLine1=" switch (mCameraController.getImageCaptureFlashMode()) {" |
| errorLine2=" ~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CameraControllerFragment.java" |
| line="394" |
| column="9"/> |
| </issue> |
| |
| <issue |
| id="AllowBackup" |
| message="On SDK version 23 and up, your app data will be automatically backed up and restored on app install. Consider adding the attribute `android:fullBackupContent` to specify an `@xml` resource which configures which files to backup. More info: https://developer.android.com/training/backup/autosyncapi.html" |
| errorLine1=" <application" |
| errorLine2=" ~~~~~~~~~~~"> |
| <location |
| file="src/main/AndroidManifest.xml" |
| line="23" |
| column="6"/> |
| </issue> |
| |
| <issue |
| id="AllowBackup" |
| message="Should explicitly set `android:allowBackup` to `true` or `false` (it's `true` by default, and that can have some security implications for the application's data)" |
| errorLine1=" <application" |
| errorLine2=" ~~~~~~~~~~~"> |
| <location |
| file="src/main/AndroidManifest.xml" |
| line="23" |
| column="6"/> |
| </issue> |
| |
| <issue |
| id="HandlerLeak" |
| message="This `Handler` class should be static or leaks might occur (anonymous android.os.Handler)" |
| errorLine1=" new Handler() {" |
| errorLine2=" ^"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CaptureViewOnTouchListener.java" |
| line="73" |
| column="13"/> |
| </issue> |
| |
| <issue |
| id="MergeRootFrame" |
| message="This `<FrameLayout>` can be replaced with a `<merge>` tag" |
| errorLine1="<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"" |
| errorLine2="^"> |
| <location |
| file="src/main/res/layout/activity_main.xml" |
| line="16" |
| column="1"/> |
| </issue> |
| |
| <issue |
| id="DisableBaselineAlignment" |
| message="Set `android:baselineAligned="false"` on this element for better performance" |
| errorLine1="<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"" |
| errorLine2=" ~~~~~~~~~~~~"> |
| <location |
| file="src/main/res/layout-land/camera_controller_view.xml" |
| line="16" |
| column="2"/> |
| </issue> |
| |
| <issue |
| id="DisableBaselineAlignment" |
| message="Set `android:baselineAligned="false"` on this element for better performance" |
| errorLine1="<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"" |
| errorLine2=" ~~~~~~~~~~~~"> |
| <location |
| file="src/main/res/layout-land/fragment_preview_view.xml" |
| line="16" |
| column="2"/> |
| </issue> |
| |
| <issue |
| id="UnusedResources" |
| message="The resource `R.string.preview` appears to be unused" |
| errorLine1=" <string name="preview">Preview</string>" |
| errorLine2=" ~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/res/values/strings.xml" |
| line="20" |
| column="13"/> |
| </issue> |
| |
| <issue |
| id="UnusedResources" |
| message="The resource `R.string.btn_confirm` appears to be unused" |
| errorLine1=" <string name="btn_confirm">Confirm</string>" |
| errorLine2=" ~~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/res/values/strings.xml" |
| line="41" |
| column="13"/> |
| </issue> |
| |
| <issue |
| id="UnusedResources" |
| message="The resource `R.string.btn_cancel` appears to be unused" |
| errorLine1=" <string name="btn_cancel">Cancel</string>" |
| errorLine2=" ~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/res/values/strings.xml" |
| line="42" |
| column="13"/> |
| </issue> |
| |
| <issue |
| id="SyntheticAccessor" |
| message="Access to `private` method `onTap` of class `CaptureViewOnTouchListener` requires synthetic accessor" |
| errorLine1=" onTap();" |
| errorLine2=" ~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CaptureViewOnTouchListener.java" |
| line="78" |
| column="29"/> |
| </issue> |
| |
| <issue |
| id="SyntheticAccessor" |
| message="Access to `private` method `onHold` of class `CaptureViewOnTouchListener` requires synthetic accessor" |
| errorLine1=" onHold();" |
| errorLine2=" ~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CaptureViewOnTouchListener.java" |
| line="81" |
| column="29"/> |
| </issue> |
| |
| <issue |
| id="SyntheticAccessor" |
| message="Access to `private` field `mCameraView` of class `CaptureViewOnTouchListener` requires synthetic accessor" |
| errorLine1=" if (mCameraView.getMaxVideoDuration() > 0) {" |
| errorLine2=" ~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CaptureViewOnTouchListener.java" |
| line="82" |
| column="33"/> |
| </issue> |
| |
| <issue |
| id="SyntheticAccessor" |
| message="Access to `private` field `mCameraView` of class `CaptureViewOnTouchListener` requires synthetic accessor" |
| errorLine1=" sendEmptyMessageDelayed(RELEASE, mCameraView.getMaxVideoDuration());" |
| errorLine2=" ~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CaptureViewOnTouchListener.java" |
| line="83" |
| column="66"/> |
| </issue> |
| |
| <issue |
| id="SyntheticAccessor" |
| message="Access to `private` method `onRelease` of class `CaptureViewOnTouchListener` requires synthetic accessor" |
| errorLine1=" onRelease();" |
| errorLine2=" ~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CaptureViewOnTouchListener.java" |
| line="87" |
| column="29"/> |
| </issue> |
| |
| <issue |
| id="SyntheticAccessor" |
| message="Access to `private` field `IMAGE_VIEW_SCALE_TYPES` of class `PreviewViewFragment` requires synthetic accessor" |
| errorLine1=" previewSnapshot.setScaleType(IMAGE_VIEW_SCALE_TYPES[position]);" |
| errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/PreviewViewFragment.java" |
| line="306" |
| column="46"/> |
| </issue> |
| |
| <issue |
| id="UselessParent" |
| message="This `LinearLayout` layout or its `FrameLayout` parent is possibly useless" |
| errorLine1=" <LinearLayout" |
| errorLine2=" ~~~~~~~~~~~~"> |
| <location |
| file="src/main/res/layout-land/fragment_main.xml" |
| line="21" |
| column="6"/> |
| </issue> |
| |
| <issue |
| id="UselessParent" |
| message="This `LinearLayout` layout or its `FrameLayout` parent is possibly useless" |
| errorLine1=" <LinearLayout" |
| errorLine2=" ~~~~~~~~~~~~"> |
| <location |
| file="src/main/res/layout/fragment_main.xml" |
| line="21" |
| column="6"/> |
| </issue> |
| |
| <issue |
| id="MissingApplicationIcon" |
| message="Should explicitly set `android:icon`, there is no default" |
| errorLine1=" <application" |
| errorLine2=" ~~~~~~~~~~~"> |
| <location |
| file="src/main/AndroidManifest.xml" |
| line="23" |
| column="6"/> |
| </issue> |
| |
| <issue |
| id="ClickableViewAccessibility" |
| message="`CaptureViewOnTouchListener#onTouch` should call `View#performClick` when a click is detected" |
| errorLine1=" public boolean onTouch(View view, MotionEvent event) {" |
| errorLine2=" ~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CaptureViewOnTouchListener.java" |
| line="179" |
| column="20"/> |
| </issue> |
| |
| <issue |
| id="ClickableViewAccessibility" |
| message="`onTouch` lambda should call `View#performClick` when a click is detected" |
| errorLine1=" mPreviewView.setOnTouchListener((view, motionEvent) -> {" |
| errorLine2=" ^"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/PreviewViewFragment.java" |
| line="334" |
| column="41"/> |
| </issue> |
| |
| <issue |
| id="ContentDescription" |
| message="Missing `contentDescription` attribute on image" |
| errorLine1=" <ImageView" |
| errorLine2=" ~~~~~~~~~"> |
| <location |
| file="src/main/res/layout-land/fragment_preview_view.xml" |
| line="32" |
| column="10"/> |
| </issue> |
| |
| <issue |
| id="ContentDescription" |
| message="Missing `contentDescription` attribute on image" |
| errorLine1=" <ImageView" |
| errorLine2=" ~~~~~~~~~"> |
| <location |
| file="src/main/res/layout/fragment_preview_view.xml" |
| line="33" |
| column="10"/> |
| </issue> |
| |
| <issue |
| id="SetTextI18n" |
| message="String literal in `setText` can not be translated. Use Android resources instead." |
| errorLine1=" mZoomStateText.setText("Null");" |
| errorLine2=" ~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CameraControllerFragment.java" |
| line="356" |
| column="36"/> |
| </issue> |
| |
| <issue |
| id="SetTextI18n" |
| message="String literal in `setText` can not be translated. Use Android resources instead." |
| errorLine1=" mTorchStateText.setText("Torch state null");" |
| errorLine2=" ~~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CameraControllerFragment.java" |
| line="364" |
| column="37"/> |
| </issue> |
| |
| <issue |
| id="SetTextI18n" |
| message="Do not concatenate text displayed with `setText`. Use resource string with placeholders." |
| errorLine1=" mTorchStateText.setText("Torch state: " + torchState);" |
| errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CameraControllerFragment.java" |
| line="366" |
| column="37"/> |
| </issue> |
| |
| <issue |
| id="SetTextI18n" |
| message="String literal in `setText` can not be translated. Use Android resources instead." |
| errorLine1=" mTorchStateText.setText("Torch state: " + torchState);" |
| errorLine2=" ~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/CameraControllerFragment.java" |
| line="366" |
| column="37"/> |
| </issue> |
| |
| <issue |
| id="SetTextI18n" |
| message="String literal in `setText` can not be translated. Use Android resources instead." |
| errorLine1=" rotationButton.setText("ROTATION_0");" |
| errorLine2=" ~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/PreviewViewFragment.java" |
| line="188" |
| column="40"/> |
| </issue> |
| |
| <issue |
| id="SetTextI18n" |
| message="String literal in `setText` can not be translated. Use Android resources instead." |
| errorLine1=" rotationButton.setText("ROTATION_90");" |
| errorLine2=" ~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/PreviewViewFragment.java" |
| line="191" |
| column="40"/> |
| </issue> |
| |
| <issue |
| id="SetTextI18n" |
| message="String literal in `setText` can not be translated. Use Android resources instead." |
| errorLine1=" rotationButton.setText("ROTATION_180");" |
| errorLine2=" ~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/PreviewViewFragment.java" |
| line="194" |
| column="40"/> |
| </issue> |
| |
| <issue |
| id="SetTextI18n" |
| message="String literal in `setText` can not be translated. Use Android resources instead." |
| errorLine1=" rotationButton.setText("ROTATION_270");" |
| errorLine2=" ~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/PreviewViewFragment.java" |
| line="197" |
| column="40"/> |
| </issue> |
| |
| <issue |
| id="RtlHardcoded" |
| message="Consider replacing `android:layout_marginRight` with `android:layout_marginEnd="15dp"` to better support right-to-left layouts" |
| errorLine1=" android:layout_marginRight="15dp"" |
| errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~"> |
| <location |
| file="src/main/res/layout/fragment_main.xml" |
| line="60" |
| column="17"/> |
| </issue> |
| |
| <issue |
| id="UnknownNullness" |
| message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations" |
| errorLine1=" protected void onCreate(Bundle savedInstanceState) {" |
| errorLine2=" ~~~~~~"> |
| <location |
| file="src/main/java/androidx/camera/integration/view/MainActivity.java" |
| line="55" |
| column="29"/> |
| </issue> |
| |
| </issues> |