diff --git a/library/build.gradle b/library/build.gradle index c0fac0ff..c375cbc8 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -15,6 +15,11 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } + + lintOptions { + baselineFile file("lint-baseline.xml") + abortOnError true + } } dependencies { diff --git a/library/lint-baseline.xml b/library/lint-baseline.xml new file mode 100644 index 00000000..76081cd7 --- /dev/null +++ b/library/lint-baseline.xml @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> +<issues format="4" by="lint 2.3.3"> + + <issue + id="NewApi" + message="Call requires API level 21 (current min is 14): android.widget.AbsListView#setSelectionFromTop" + errorLine1=" setSelectionFromTop(movePos, top - padTop);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/mobeta/android/dslv/DragSortListView.java" + line="2936" + column="13"/> + </issue> + + <issue + id="OldTargetApi" + message="Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the `android.os.Build.VERSION_CODES` javadoc for details." + errorLine1=" <uses-sdk android:targetSdkVersion="7"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="6" + column="15"/> + </issue> + + <issue + id="GradleOverrides" + message="This `targetSdkVersion` value (`7`) is not used; it is always overridden by the value specified in the Gradle build script (`22`)" + errorLine1=" <uses-sdk android:targetSdkVersion="7"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="6" + column="15"/> + </issue> + + <issue + id="GradleOverrides" + message="This `minSdkVersion` value (`7`) is not used; it is always overridden by the value specified in the Gradle build script (`14`)" + errorLine1=" android:minSdkVersion="7" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="7" + column="7"/> + </issue> + + <issue + id="ClickableViewAccessibility" + message="`com/mobeta/android/dslv/DragSortController#onTouch` should call `View#performClick` when a click is detected" + errorLine1=" public boolean onTouch(View v, MotionEvent ev) {" + errorLine2=" ~~~~~~~"> + <location + file="src/main/java/com/mobeta/android/dslv/DragSortController.java" + line="238" + column="20"/> + </issue> + +</issues> diff --git a/menudrawer/build.gradle b/menudrawer/build.gradle index 1670670d..cd6f4945 100644 --- a/menudrawer/build.gradle +++ b/menudrawer/build.gradle @@ -15,4 +15,9 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } + + lintOptions { + baselineFile file("lint-baseline.xml") + abortOnError true + } } diff --git a/menudrawer/lint-baseline.xml b/menudrawer/lint-baseline.xml new file mode 100644 index 00000000..859ac8dc --- /dev/null +++ b/menudrawer/lint-baseline.xml @@ -0,0 +1,246 @@ +<?xml version="1.0" encoding="UTF-8"?> +<issues format="4" by="lint 2.3.3"> + + <issue + id="InlinedApi" + message="Field requires API level 17 (current min is 14): `android.view.View#LAYOUT_DIRECTION_RTL`" + errorLine1=" if (mSlideDrawable != null) mSlideDrawable.setIsRtl(layoutDirection == LAYOUT_DIRECTION_RTL);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/MenuDrawer.java" + line="882" + column="80"/> + </issue> + + <issue + id="InlinedApi" + message="Field requires API level 17 (current min is 14): `android.view.View#LAYOUT_DIRECTION_RTL`" + errorLine1=" mSlideDrawable.setIsRtl(ViewHelper.getLayoutDirection(this) == LAYOUT_DIRECTION_RTL);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/MenuDrawer.java" + line="1325" + column="72"/> + </issue> + + <issue + id="OldTargetApi" + message="Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the `android.os.Build.VERSION_CODES` javadoc for details." + errorLine1=" <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="16" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="7" + column="41"/> + </issue> + + <issue + id="GradleOverrides" + message="This `minSdkVersion` value (`7`) is not used; it is always overridden by the value specified in the Gradle build script (`14`)" + errorLine1=" <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="16" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="7" + column="15"/> + </issue> + + <issue + id="GradleOverrides" + message="This `targetSdkVersion` value (`16`) is not used; it is always overridden by the value specified in the Gradle build script (`22`)" + errorLine1=" <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="16" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="7" + column="41"/> + </issue> + + <issue + id="ParcelClassLoader" + message="Using the default class loader will not work if you are restoring your own classes. Consider using for example `readBundle(getClass().getClassLoader())` instead." + errorLine1=" mState = in.readBundle();" + errorLine2=" ~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/MenuDrawer.java" + line="1630" + column="25"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is never < 14" + errorLine1=" if (mUsesCompat && Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="41" + column="28"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="43" + column="20"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is never < 14" + errorLine1=" if (mUsesCompat && Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="51" + column="28"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="53" + column="20"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is never < 14" + errorLine1=" if (mUsesCompat && Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="59" + column="28"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="61" + column="20"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is never < 14" + errorLine1=" if (mUsesCompat && Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="67" + column="28"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="69" + column="20"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is never < 14" + errorLine1=" if (mUsesCompat && Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="77" + column="28"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="79" + column="20"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/DraggableDrawer.java" + line="572" + column="13"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/DraggableDrawer.java" + line="580" + column="13"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/DraggableDrawer.java" + line="588" + column="13"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/DraggableDrawer.java" + line="596" + column="13"/> + </issue> + + <issue + id="FloatMath" + message="Use `java.lang.Math#sqrt` instead of `android.util.FloatMath#sqrt()` since it is faster as of API 8" + errorLine1=" float hyp = FloatMath.sqrt(dx * dx + dy * dy);" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/Scroller.java" + line="374" + column="25"/> + </issue> + + <issue + id="FloatMath" + message="Use `java.lang.Math#sqrt` instead of `android.util.FloatMath#sqrt()` since it is faster as of API 8" + errorLine1=" float velocity = FloatMath.sqrt(velocityX * velocityX + velocityY * velocityY);" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/Scroller.java" + line="391" + column="26"/> + </issue> + +</issues> diff --git a/menudrawer/src/main/res/values/strings.xml b/menudrawer/src/main/res/values/strings.xml index 27aacbb2..5411fe89 100644 --- a/menudrawer/src/main/res/values/strings.xml +++ b/menudrawer/src/main/res/values/strings.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> -<resources> +<resources xmlns:tools="http://schemas.android.com/tools"> - <string name="md__drawerOpenIndicatorDesc">Close drawer</string> + <string name="md__drawerOpenIndicatorDesc" tools:ignore="MissingTranslation">Close drawer</string> - <string name="md__drawerClosedIndicatorDesc">Open drawer</string> + <string name="md__drawerClosedIndicatorDesc" tools:ignore="MissingTranslation">Open drawer</string> </resources> diff --git a/pulltorefresh/build.gradle b/pulltorefresh/build.gradle index 1670670d..cd6f4945 100644 --- a/pulltorefresh/build.gradle +++ b/pulltorefresh/build.gradle @@ -15,4 +15,9 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } + + lintOptions { + baselineFile file("lint-baseline.xml") + abortOnError true + } } diff --git a/pulltorefresh/lint-baseline.xml b/pulltorefresh/lint-baseline.xml new file mode 100644 index 00000000..771b65e4 --- /dev/null +++ b/pulltorefresh/lint-baseline.xml @@ -0,0 +1,326 @@ +<?xml version="1.0" encoding="UTF-8"?> +<issues format="4" by="lint 2.3.3"> + + <issue + id="LocaleFolder" + message="The locale folder "`he`" should be called "`iw`" instead; see the `java.util.Locale` documentation"> + <location + file="src/main/res/values-he"/> + </issue> + + <issue + id="OldTargetApi" + message="Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the `android.os.Build.VERSION_CODES` javadoc for details." + errorLine1=" <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="16" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="7" + column="41"/> + </issue> + + <issue + id="GradleOverrides" + message="This `minSdkVersion` value (`4`) is not used; it is always overridden by the value specified in the Gradle build script (`14`)" + errorLine1=" <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="16" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="7" + column="15"/> + </issue> + + <issue + id="GradleOverrides" + message="This `targetSdkVersion` value (`16`) is not used; it is always overridden by the value specified in the Gradle build script (`22`)" + errorLine1=" <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="16" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="7" + column="41"/> + </issue> + + <issue + id="Deprecated" + message="`android:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" android:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/pull_to_refresh_header_vertical.xml" + line="45" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`android:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" android:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/pull_to_refresh_header_vertical.xml" + line="53" + column="17"/> + </issue> + + <issue + id="MissingTranslation" + message=""`pull_to_refresh_from_bottom_pull_label`" is not translated in "es" (Spanish), "fr" (French), "pt" (Portuguese), "pt-BR" (Portuguese: Brazil)" + errorLine1=" <string name="pull_to_refresh_from_bottom_pull_label">@string/pull_to_refresh_pull_label</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values/pull_refresh_strings.xml" + line="9" + column="13"/> + </issue> + + <issue + id="MissingTranslation" + message=""`pull_to_refresh_from_bottom_release_label`" is not translated in "es" (Spanish), "fr" (French), "pt" (Portuguese), "pt-BR" (Portuguese: Brazil)" + errorLine1=" <string name="pull_to_refresh_from_bottom_release_label">@string/pull_to_refresh_release_label</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values/pull_refresh_strings.xml" + line="10" + column="13"/> + </issue> + + <issue + id="MissingTranslation" + message=""`pull_to_refresh_from_bottom_refreshing_label`" is not translated in "es" (Spanish), "fr" (French), "pt" (Portuguese), "pt-BR" (Portuguese: Brazil)" + errorLine1=" <string name="pull_to_refresh_from_bottom_refreshing_label">@string/pull_to_refresh_refreshing_label</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values/pull_refresh_strings.xml" + line="11" + column="13"/> + </issue> + + <issue + id="AddJavascriptInterface" + message="`WebView.addJavascriptInterface` should not be called with minSdkVersion < 17 for security reasons: JavaScript can use reflection to manipulate application" + errorLine1=" webView.addJavascriptInterface(mJsCallback, JS_INTERFACE_PKG);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.java" + line="90" + column="11"/> + </issue> + + <issue + id="JavascriptInterface" + message="None of the methods in the added interface (JsValueCallback) have been annotated with `@android.webkit.JavascriptInterface`; they will not be visible in API 17" + errorLine1=" webView.addJavascriptInterface(mJsCallback, JS_INTERFACE_PKG);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.java" + line="90" + column="11"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" return VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD && mOverScrollEnabled" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshBase.java" + line="211" + column="10"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.java" + line="54" + column="7"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshGridView.java" + line="54" + column="7"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.java" + line="53" + column="7"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshListView.java" + line="207" + column="7"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshScrollView.java" + line="52" + column="7"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshWebView.java" + line="98" + column="7"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/internal/ViewCompat.java" + line="44" + column="7"/> + </issue> + + <issue + id="FloatMath" + message="Use `java.lang.Math#floor` instead of `android.util.FloatMath#floor()` since it is faster as of API 8" + errorLine1=" float exactContentHeight = FloatMath.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale());" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshWebView.java" + line="115" + column="30"/> + </issue> + + <issue + id="FloatMath" + message="Use `java.lang.Math#floor` instead of `android.util.FloatMath#floor()` since it is faster as of API 8" + errorLine1=" return (int) Math.max(0, FloatMath.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale())" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshWebView.java" + line="161" + column="29"/> + </issue> + + <issue + id="IconMissingDensityFolder" + message="Missing density variation folders in `src/main/res`: drawable-xxhdpi"> + <location + file="src/main/res"/> + </issue> + + <issue + id="ViewConstructor" + message="Custom view `RotateLoadingLayout` is missing constructor used by tools: `(Context)` or `(Context,AttributeSet)` or `(Context,AttributeSet,int)`" + errorLine1="public class RotateLoadingLayout extends LoadingLayout {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.java" + line="30" + column="14"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/pull_to_refresh_header_horizontal.xml" + line="13" + column="9"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/pull_to_refresh_header_vertical.xml" + line="18" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`Gravity.START`" instead of "`Gravity.LEFT`" to ensure correct behavior in right-to-left locales" + errorLine1=" lp.gravity = scrollDirection == Orientation.VERTICAL ? Gravity.TOP : Gravity.LEFT;" + errorLine2=" ~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/internal/LoadingLayout.java" + line="92" + column="82"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`Gravity.END`" instead of "`Gravity.RIGHT`" to ensure correct behavior in right-to-left locales" + errorLine1=" lp.gravity = scrollDirection == Orientation.VERTICAL ? Gravity.BOTTOM : Gravity.RIGHT;" + errorLine2=" ~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/internal/LoadingLayout.java" + line="102" + column="85"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`Gravity.END`" instead of "`Gravity.RIGHT`" to ensure correct behavior in right-to-left locales" + errorLine1=" params.gravity = Gravity.TOP | Gravity.RIGHT;" + errorLine2=" ~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.java" + line="344" + column="43"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`Gravity.END`" instead of "`Gravity.RIGHT`" to ensure correct behavior in right-to-left locales" + errorLine1=" params.gravity = Gravity.BOTTOM | Gravity.RIGHT;" + errorLine2=" ~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.java" + line="359" + column="46"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" android:layout_gravity="left|center_vertical" >" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/pull_to_refresh_header_vertical.xml" + line="16" + column="37"/> + </issue> + +</issues> diff --git a/pulltorefresh/src/main/res/values/pull_refresh_strings.xml b/pulltorefresh/src/main/res/values/pull_refresh_strings.xml index fe48f3bc..20cd2fa4 100755 --- a/pulltorefresh/src/main/res/values/pull_refresh_strings.xml +++ b/pulltorefresh/src/main/res/values/pull_refresh_strings.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="utf-8"?> -<resources> +<resources xmlns:tools="http://schemas.android.com/tools"> - <string name="pull_to_refresh_pull_label">Pull to refresh…</string> - <string name="pull_to_refresh_release_label">Release to refresh…</string> - <string name="pull_to_refresh_refreshing_label">Loading…</string> + <string name="pull_to_refresh_pull_label" tools:ignore="MissingTranslation">Pull to refresh…</string> + <string name="pull_to_refresh_release_label" tools:ignore="MissingTranslation">Release to refresh…</string> + <string name="pull_to_refresh_refreshing_label" tools:ignore="MissingTranslation">Loading…</string> <!-- Just use standard Pull Down String when pulling up. These can be set for languages which require it --> - <string name="pull_to_refresh_from_bottom_pull_label">@string/pull_to_refresh_pull_label</string> - <string name="pull_to_refresh_from_bottom_release_label">@string/pull_to_refresh_release_label</string> - <string name="pull_to_refresh_from_bottom_refreshing_label">@string/pull_to_refresh_refreshing_label</string> + <string name="pull_to_refresh_from_bottom_pull_label" tools:ignore="MissingTranslation">@string/pull_to_refresh_pull_label</string> + <string name="pull_to_refresh_from_bottom_release_label" tools:ignore="MissingTranslation">@string/pull_to_refresh_release_label</string> + <string name="pull_to_refresh_from_bottom_refreshing_label" tools:ignore="MissingTranslation">@string/pull_to_refresh_refreshing_label</string> </resources> \ No newline at end of file diff --git a/ultrasonic/build.gradle b/ultrasonic/build.gradle index e9bcd67c..4870827b 100644 --- a/ultrasonic/build.gradle +++ b/ultrasonic/build.gradle @@ -27,6 +27,11 @@ android { packagingOptions { exclude 'META-INF/LICENSE' } + + lintOptions { + baselineFile file("lint-baseline.xml") + abortOnError true + } } dependencies { diff --git a/ultrasonic/lint-baseline.xml b/ultrasonic/lint-baseline.xml new file mode 100644 index 00000000..bdd2edb8 --- /dev/null +++ b/ultrasonic/lint-baseline.xml @@ -0,0 +1,5142 @@ +<?xml version="1.0" encoding="UTF-8"?> +<issues format="4" by="lint 2.3.3"> + + <issue + id="ScrollViewSize" + message="This LinearLayout should use `android:layout_height="wrap_content"`" + errorLine1=" a:layout_height="fill_parent">" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/lyrics.xml" + line="18" + column="17"/> + </issue> + + <issue + id="ApplySharedPref" + message="Consider using `apply()` instead; `commit` writes its data to persistent storage immediately, whereas `apply` will handle it in the background" + errorLine1=" editor.commit();" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/MainActivity.java" + line="262" + column="4"/> + </issue> + + <issue + id="ApplySharedPref" + message="Consider using `apply()` instead; `commit` writes its data to persistent storage immediately, whereas `apply` will handle it in the background" + errorLine1=" editor.commit();" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/Util.java" + line="153" + column="3"/> + </issue> + + <issue + id="ApplySharedPref" + message="Consider using `apply()` instead; `commit` writes its data to persistent storage immediately, whereas `apply` will handle it in the background" + errorLine1=" editor.commit();" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/Util.java" + line="200" + column="3"/> + </issue> + + <issue + id="ApplySharedPref" + message="Consider using `apply()` instead; `commit` writes its data to persistent storage immediately, whereas `apply` will handle it in the background" + errorLine1=" editor.commit();" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/Util.java" + line="309" + column="3"/> + </issue> + + <issue + id="ApplySharedPref" + message="Consider using `apply()` instead; `commit` writes its data to persistent storage immediately, whereas `apply` will handle it in the background" + errorLine1=" editor.commit();" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/Util.java" + line="328" + column="3"/> + </issue> + + <issue + id="ApplySharedPref" + message="Consider using `apply()` instead; `commit` writes its data to persistent storage immediately, whereas `apply` will handle it in the background" + errorLine1=" editor.commit();" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/Util.java" + line="427" + column="4"/> + </issue> + + <issue + id="ApplySharedPref" + message="Consider using `apply()` instead; `commit` writes its data to persistent storage immediately, whereas `apply` will handle it in the background" + errorLine1=" editor.commit();" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/Util.java" + line="1634" + column="3"/> + </issue> + + <issue + id="ApplySharedPref" + message="Consider using `apply()` instead; `commit` writes its data to persistent storage immediately, whereas `apply` will handle it in the background" + errorLine1=" editor.commit();" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/Util.java" + line="1642" + column="3"/> + </issue> + + <issue + id="ApplySharedPref" + message="Consider using `apply()` instead; `commit` writes its data to persistent storage immediately, whereas `apply` will handle it in the background" + errorLine1=" editor.commit();" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/Util.java" + line="1650" + column="3"/> + </issue> + + <issue + id="CutPasteId" + message="The id `R.id.now_playing_control_play` has already been looked up in this method; possible cut & paste error?" + errorLine1=" ImageView nowPlayingControlPlay = (ImageView) nowPlayingView.findViewById(R.id.now_playing_control_play);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/SubsonicTabActivity.java" + line="414" + column="51"/> + <location + file="src/main/java/org/moire/ultrasonic/activity/SubsonicTabActivity.java" + line="360" + column="40"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" handleError(new Exception(String.format("MediaPlayer error: %d (%d)", what, more)));" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/DownloadServiceImpl.java" + line="202" + column="33"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" dataSource = String.format("http://127.0.0.1:%d/%s", proxy.getPort(), URLEncoder.encode(dataSource, Constants.UTF_8));" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/DownloadServiceImpl.java" + line="1594" + column="18"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" levelTextView.setText(String.format("%s%d dB", level > 0 ? "+" : "", level / 100));" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/EqualizerActivity.java" + line="265" + column="26"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `toLowerCase(Locale)` instead. For strings meant to be internal use `Locale.ROOT`, otherwise `Locale.getDefault()`." + errorLine1=" return index == -1 ? "" : name.substring(index + 1).toLowerCase();" + errorLine2=" ~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/FileUtil.java" + line="533" + column="55"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" Thread thread = new Thread(this, String.format("ImageLoader_%d", i));" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/ImageLoader.java" + line="105" + column="37"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" return String.format("%s:%d", coverArtId, size);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/ImageLoader.java" + line="208" + column="10"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `toLowerCase(Locale)` instead. For strings meant to be internal use `Locale.ROOT`, otherwise `Locale.getDefault()`." + errorLine1=" String lhs = lhsArtist.getName().toLowerCase();" + errorLine2=" ~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/OfflineMusicService.java" + line="105" + column="38"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `toLowerCase(Locale)` instead. For strings meant to be internal use `Locale.ROOT`, otherwise `Locale.getDefault()`." + errorLine1=" String rhs = rhsArtist.getName().toLowerCase();" + errorLine2=" ~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/OfflineMusicService.java" + line="106" + column="38"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `toLowerCase(Locale)` instead. For strings meant to be internal use `Locale.ROOT`, otherwise `Locale.getDefault()`." + errorLine1=" int index = lhs.indexOf(String.format("%s ", article.toLowerCase()));" + errorLine2=" ~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/OfflineMusicService.java" + line="123" + column="59"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `toLowerCase(Locale)` instead. For strings meant to be internal use `Locale.ROOT`, otherwise `Locale.getDefault()`." + errorLine1=" index = rhs.indexOf(String.format("%s ", article.toLowerCase()));" + errorLine2=" ~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/OfflineMusicService.java" + line="130" + column="55"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `toLowerCase(Locale)` instead. For strings meant to be internal use `Locale.ROOT`, otherwise `Locale.getDefault()`." + errorLine1=" String query = criteria.getQuery().toLowerCase();" + errorLine2=" ~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/OfflineMusicService.java" + line="506" + column="38"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `toLowerCase(Locale)` instead. For strings meant to be internal use `Locale.ROOT`, otherwise `Locale.getDefault()`." + errorLine1=" String[] nameParts = COMPILE.split(name.toLowerCase());" + errorLine2=" ~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/OfflineMusicService.java" + line="508" + column="43"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" return String.format("indexes-%d.ser", Math.abs(s.hashCode()));" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/RESTMusicService.java" + line="288" + column="10"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" return String.format("indexes-%d.ser", Math.abs(s.hashCode()));" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/RESTMusicService.java" + line="335" + column="10"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" return String.format("musicFolders-%d.ser", Math.abs(s.hashCode()));" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/RESTMusicService.java" + line="351" + column="10"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" headers.add(new BasicHeader("Range", String.format("bytes=%d-", offset)));" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/RESTMusicService.java" + line="941" + column="41"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" viewHolder.track.setText(String.format("%02d.", trackNumber));" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/view/SongView.java" + line="193" + column="30"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" Util.setDefaultShareExpiration(SubsonicTabActivity.this, !noExpirationCheckBox.isChecked() && timeSpanAmount > 0 ? String.format("%d:%s", timeSpanAmount, timeSpanType) : "");" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/SubsonicTabActivity.java" + line="507" + column="122"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" persisted = String.format("%d:%s", tsAmount, tsType);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/TimeSpanPreference.java" + line="92" + column="17"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" return String.format("%02d:%02d:%02d", hours, minutes, seconds);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/Util.java" + line="1477" + column="11"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" return String.format("%d:%02d:%02d", hours, minutes, seconds);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/Util.java" + line="1481" + column="11"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" return String.format("%02d:%02d", minutes, seconds);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/Util.java" + line="1485" + column="11"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" else return minutes > 0 ? String.format("%d:%02d", minutes, seconds) : String.format("0:%02d", seconds);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/Util.java" + line="1488" + column="29"/> + </issue> + + <issue + id="DefaultLocale" + message="Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead" + errorLine1=" else return minutes > 0 ? String.format("%d:%02d", minutes, seconds) : String.format("0:%02d", seconds);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/Util.java" + line="1488" + column="74"/> + </issue> + + <issue + id="InlinedApi" + message="Field requires API level 17 (current min is 14): `android.view.View#LAYOUT_DIRECTION_RTL`" + errorLine1=" if (mSlideDrawable != null) mSlideDrawable.setIsRtl(layoutDirection == LAYOUT_DIRECTION_RTL);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/MenuDrawer.java" + line="882" + column="80"/> + </issue> + + <issue + id="InlinedApi" + message="Field requires API level 17 (current min is 14): `android.view.View#LAYOUT_DIRECTION_RTL`" + errorLine1=" mSlideDrawable.setIsRtl(ViewHelper.getLayoutDirection(this) == LAYOUT_DIRECTION_RTL);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/MenuDrawer.java" + line="1325" + column="72"/> + </issue> + + <issue + id="LocaleFolder" + message="The locale folder "`he`" should be called "`iw`" instead; see the `java.util.Locale` documentation"> + <location + file="src/main/res/values-he"/> + </issue> + + <issue + id="NewApi" + message="Call requires API level 21 (current min is 14): android.widget.AbsListView#setSelectionFromTop" + errorLine1=" setSelectionFromTop(movePos, top - padTop);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/mobeta/android/dslv/DragSortListView.java" + line="2936" + column="13"/> + </issue> + + <issue + id="OldTargetApi" + message="Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the `android.os.Build.VERSION_CODES` javadoc for details." + errorLine1=" <uses-sdk android:targetSdkVersion="7"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="6" + column="15"/> + </issue> + + <issue + id="OldTargetApi" + message="Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the `android.os.Build.VERSION_CODES` javadoc for details." + errorLine1=" <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="16" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="7" + column="41"/> + </issue> + + <issue + id="OldTargetApi" + message="Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the `android.os.Build.VERSION_CODES` javadoc for details." + errorLine1=" <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="16" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="7" + column="41"/> + </issue> + + <issue + id="SimpleDateFormat" + 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." + errorLine1=" DateFormat parseDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/parser/PodcastEpisodeParser.java" + line="67" + column="38"/> + </issue> + + <issue + id="UnusedAttribute" + message="Attribute `widgetCategory` is only used in API level 17 and higher (current min is 14)" + errorLine1=" a:widgetCategory="home_screen|keyguard"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/xml/appwidget_info_4x1.xml" + line="8" + column="21"/> + </issue> + + <issue + id="UnusedAttribute" + message="Attribute `widgetCategory` is only used in API level 17 and higher (current min is 14)" + errorLine1=" a:widgetCategory="home_screen|keyguard"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/xml/appwidget_info_4x2.xml" + line="8" + column="21"/> + </issue> + + <issue + id="UnusedAttribute" + message="Attribute `widgetCategory` is only used in API level 17 and higher (current min is 14)" + errorLine1=" a:widgetCategory="home_screen|keyguard"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/xml/appwidget_info_4x3.xml" + line="8" + column="21"/> + </issue> + + <issue + id="UnusedAttribute" + message="Attribute `widgetCategory` is only used in API level 17 and higher (current min is 14)" + errorLine1=" a:widgetCategory="home_screen|keyguard"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/xml/appwidget_info_4x4.xml" + line="8" + column="21"/> + </issue> + + <issue + id="WifiManagerPotentialLeak" + message="The WIFI_SERVICE must be looked up on the Application context or memory will leak on devices < Android N. Try changing `context` to `context.getApplicationContext()` " + errorLine1=" WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/Util.java" + line="892" + column="34"/> + </issue> + + <issue + id="IncludeLayoutParam" + message="Layout parameter `layout_gravity` ignored unless both `layout_width` and `layout_height` are also specified on `<include>` tag" + errorLine1=" a:layout_gravity="center_vertical" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/video_list_item.xml" + line="17" + column="9"/> + </issue> + + <issue + id="InflateParams" + message="Avoid passing `null` as the view root (needed to resolve layout parameters on the inflated layout's root element)" + errorLine1=" View bandBar = LayoutInflater.from(this).inflate(R.layout.equalizer_bar, null);" + errorLine2=" ~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/EqualizerActivity.java" + line="202" + column="78"/> + </issue> + + <issue + id="InflateParams" + message="Avoid passing `null` as the view root (needed to resolve layout parameters on the inflated layout's root element)" + errorLine1=" View view = inflater.inflate(R.layout.jukebox_volume, null);" + errorLine2=" ~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/JukeboxService.java" + line="466" + column="58"/> + </issue> + + <issue + id="InflateParams" + message="Avoid passing `null` as the view root (needed to resolve layout parameters on the inflated layout's root element)" + errorLine1=" final View buttons = LayoutInflater.from(this).inflate(R.layout.main_buttons, null);" + errorLine2=" ~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/MainActivity.java" + line="98" + column="81"/> + </issue> + + <issue + id="InflateParams" + message="Avoid passing `null` as the view root (needed to resolve layout parameters on the inflated layout's root element)" + errorLine1=" View buttons = LayoutInflater.from(this).inflate(R.layout.search_buttons, null);" + errorLine2=" ~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/SearchActivity.java" + line="101" + column="77"/> + </issue> + + <issue + id="InflateParams" + message="Avoid passing `null` as the view root (needed to resolve layout parameters on the inflated layout's root element)" + errorLine1=" View dialogView = getLayoutInflater().inflate(R.layout.update_playlist, null);" + errorLine2=" ~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/SelectPlaylistActivity.java" + line="303" + column="75"/> + </issue> + + <issue + id="InflateParams" + message="Avoid passing `null` as the view root (needed to resolve layout parameters on the inflated layout's root element)" + errorLine1=" View dialogView = getLayoutInflater().inflate(R.layout.share_details, null);" + errorLine2=" ~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/ShareActivity.java" + line="287" + column="73"/> + </issue> + + <issue + id="LongLogTag" + message="The logging tag can be at most 23 characters, was 31 (Exception in CacheCleaner.clean)" + errorLine1=" Log.w("Exception in CacheCleaner.clean", ex);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/CacheCleaner.java" + line="50" + column="4"/> + </issue> + + <issue + id="LongLogTag" + message="The logging tag can be at most 23 characters, was 36 (Exception in CacheCleaner.cleanSpace)" + errorLine1=" Log.w("Exception in CacheCleaner.cleanSpace", ex);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/CacheCleaner.java" + line="63" + column="4"/> + </issue> + + <issue + id="LongLogTag" + message="The logging tag can be at most 23 characters, was 40 (Exception in CacheCleaner.cleanPlaylists)" + errorLine1=" Log.w("Exception in CacheCleaner.cleanPlaylists", ex);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/util/CacheCleaner.java" + line="76" + column="4"/> + </issue> + + <issue + id="AppCompatCustomView" + message="This custom view should extend `android.support.v7.widget.AppCompatImageView` instead" + errorLine1="public class AutoRepeatButton extends ImageView" + errorLine2=" ~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/view/AutoRepeatButton.java" + line="9" + column="39"/> + </issue> + + <issue + id="GradleOverrides" + message="This `targetSdkVersion` value (`7`) is not used; it is always overridden by the value specified in the Gradle build script (`22`)" + errorLine1=" <uses-sdk android:targetSdkVersion="7"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="6" + column="15"/> + </issue> + + <issue + id="GradleOverrides" + message="This `minSdkVersion` value (`4`) is not used; it is always overridden by the value specified in the Gradle build script (`14`)" + errorLine1=" <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="16" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="7" + column="15"/> + </issue> + + <issue + id="GradleOverrides" + message="This `minSdkVersion` value (`7`) is not used; it is always overridden by the value specified in the Gradle build script (`14`)" + errorLine1=" android:minSdkVersion="7" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="7" + column="7"/> + </issue> + + <issue + id="GradleOverrides" + message="This `minSdkVersion` value (`7`) is not used; it is always overridden by the value specified in the Gradle build script (`14`)" + errorLine1=" <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="16" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="7" + column="15"/> + </issue> + + <issue + id="GradleOverrides" + message="This `targetSdkVersion` value (`16`) is not used; it is always overridden by the value specified in the Gradle build script (`22`)" + errorLine1=" <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="16" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="7" + column="41"/> + </issue> + + <issue + id="GradleOverrides" + message="This `targetSdkVersion` value (`16`) is not used; it is always overridden by the value specified in the Gradle build script (`22`)" + errorLine1=" <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="16" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/AndroidManifest.xml" + line="7" + column="41"/> + </issue> + + <issue + id="ParcelClassLoader" + message="Using the default class loader will not work if you are restoring your own classes. Consider using for example `readBundle(getClass().getClassLoader())` instead." + errorLine1=" mState = in.readBundle();" + errorLine2=" ~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/MenuDrawer.java" + line="1630" + column="25"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/album_list_item.xml" + line="30" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"/>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/album_list_item.xml" + line="38" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x1.xml" + line="44" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x1.xml" + line="62" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x2.xml" + line="46" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x2.xml" + line="63" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x2.xml" + line="80" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x3.xml" + line="47" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x3.xml" + line="65" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x4.xml" + line="48" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x4.xml" + line="66" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item.xml" + line="26" + column="13"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item.xml" + line="47" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: False is the default, so just remove the attribute" + errorLine1=" a:singleLine="false"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item.xml" + line="60" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="24" + column="13"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="42" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: False is the default, so just remove the attribute" + errorLine1=" a:singleLine="false"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="55" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/download_button_bar_flipper.xml" + line="18" + column="9"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/download_button_bar_flipper.xml" + line="74" + column="9"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/download_button_bar_flipper.xml" + line="84" + column="9"/> + </issue> + + <issue + id="Deprecated" + message="`android:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" android:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/now_playing.xml" + line="41" + column="13"/> + </issue> + + <issue + id="Deprecated" + message="`android:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" android:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/now_playing.xml" + line="52" + column="13"/> + </issue> + + <issue + id="Deprecated" + message="`android:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" android:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/pull_to_refresh_header_vertical.xml" + line="45" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`android:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" android:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/pull_to_refresh_header_vertical.xml" + line="53" + column="17"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"/> +" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/save_playlist.xml" + line="14" + column="13"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="25" + column="9"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="36" + column="9"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="47" + column="9"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="58" + column="9"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="69" + column="9"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="80" + column="9"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: False is the default, so just remove the attribute" + errorLine1=" a:singleLine="false"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/share_details.xml" + line="27" + column="13"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/share_list_item.xml" + line="42" + column="13"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="32" + column="13"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="58" + column="13"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="68" + column="13"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/video_details.xml" + line="24" + column="13"/> + </issue> + + <issue + id="Deprecated" + message="`a:singleLine` is deprecated: Use `maxLines="1"` instead" + errorLine1=" a:singleLine="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/video_details.xml" + line="34" + column="13"/> + </issue> + + <issue + id="MissingTranslation" + message=""`pull_to_refresh_pull_label`" is not translated in "hu" (Hungarian)" + errorLine1=" <string name="pull_to_refresh_pull_label">Pull to refresh…</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="/home/egorr/data/work/ultrasonic/pulltorefresh/src/main/res/values/pull_refresh_strings.xml" + line="4" + column="13"/> + </issue> + + <issue + id="MissingTranslation" + message=""`pull_to_refresh_release_label`" is not translated in "hu" (Hungarian)" + errorLine1=" <string name="pull_to_refresh_release_label">Release to refresh…</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="/home/egorr/data/work/ultrasonic/pulltorefresh/src/main/res/values/pull_refresh_strings.xml" + line="5" + column="13"/> + </issue> + + <issue + id="MissingTranslation" + message=""`pull_to_refresh_refreshing_label`" is not translated in "hu" (Hungarian)" + errorLine1=" <string name="pull_to_refresh_refreshing_label">Loading…</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="/home/egorr/data/work/ultrasonic/pulltorefresh/src/main/res/values/pull_refresh_strings.xml" + line="6" + column="13"/> + </issue> + + <issue + id="MissingTranslation" + message=""`pull_to_refresh_from_bottom_pull_label`" is not translated in "es" (Spanish), "fr" (French), "hu" (Hungarian), "pt" (Portuguese), "pt-BR" (Portuguese: Brazil)" + errorLine1=" <string name="pull_to_refresh_from_bottom_pull_label">@string/pull_to_refresh_pull_label</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="/home/egorr/data/work/ultrasonic/pulltorefresh/src/main/res/values/pull_refresh_strings.xml" + line="9" + column="13"/> + </issue> + + <issue + id="MissingTranslation" + message=""`pull_to_refresh_from_bottom_release_label`" is not translated in "es" (Spanish), "fr" (French), "hu" (Hungarian), "pt" (Portuguese), "pt-BR" (Portuguese: Brazil)" + errorLine1=" <string name="pull_to_refresh_from_bottom_release_label">@string/pull_to_refresh_release_label</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="/home/egorr/data/work/ultrasonic/pulltorefresh/src/main/res/values/pull_refresh_strings.xml" + line="10" + column="13"/> + </issue> + + <issue + id="MissingTranslation" + message=""`pull_to_refresh_from_bottom_refreshing_label`" is not translated in "es" (Spanish), "fr" (French), "hu" (Hungarian), "pt" (Portuguese), "pt-BR" (Portuguese: Brazil)" + errorLine1=" <string name="pull_to_refresh_from_bottom_refreshing_label">@string/pull_to_refresh_refreshing_label</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="/home/egorr/data/work/ultrasonic/pulltorefresh/src/main/res/values/pull_refresh_strings.xml" + line="11" + column="13"/> + </issue> + + <issue + id="MissingTranslation" + message=""`md__drawerOpenIndicatorDesc`" is not translated in "es" (Spanish), "fr" (French), "hu" (Hungarian), "pt" (Portuguese), "pt-BR" (Portuguese: Brazil)" + errorLine1=" <string name="md__drawerOpenIndicatorDesc">Close drawer</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="/home/egorr/data/work/ultrasonic/menudrawer/src/main/res/values/strings.xml" + line="4" + column="13"/> + </issue> + + <issue + id="MissingTranslation" + message=""`md__drawerClosedIndicatorDesc`" is not translated in "es" (Spanish), "fr" (French), "hu" (Hungarian), "pt" (Portuguese), "pt-BR" (Portuguese: Brazil)" + errorLine1=" <string name="md__drawerClosedIndicatorDesc">Open drawer</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="/home/egorr/data/work/ultrasonic/menudrawer/src/main/res/values/strings.xml" + line="6" + column="13"/> + </issue> + + <issue + id="Typos" + message=""Despues" is a common misspelling; did you mean "Después" ?" + errorLine1=" <string name="main.welcome_text">Te damos la bienvenida a UltraSonic! La aplicación no está configurada actualmente. Despues de que hayas configurado tu servidor personal (disponible desde <b>subsonic.org</b>), por favor haz click en <i>Añadir servidor</i> en <b>Configuración</b> para conectarte con él.</string>" + errorLine2=" ^"> + <location + file="src/main/res/values-es/strings.xml" + line="98" + column="122"/> + </issue> + + <issue + id="Typos" + message=""dia" is a common misspelling; did you mean "día" ?" + errorLine1=" <string name="select_album.not_licensed">Servidor sin licencia. Quedan %d dia(s) de prueba.</string>" + errorLine2=" ^"> + <location + file="src/main/res/values-es/strings.xml" + line="139" + column="79"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">Un titre</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-fr/strings.xml" + line="395" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">1 música</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-pt-rBR/strings.xml" + line="398" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">1 música</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-pt/strings.xml" + line="398" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">Un titre sélectionnée pour être épinglé.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-fr/strings.xml" + line="399" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">1 música selecionada para ser fixada.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-pt-rBR/strings.xml" + line="402" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">1 música selecionada para ser fixada.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-pt/strings.xml" + line="402" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">1 song selected to be downloaded.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-fr/strings.xml" + line="403" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">1 música selecionada para ser baixada.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-pt-rBR/strings.xml" + line="406" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">1 música selecionada para descarregar.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-pt/strings.xml" + line="406" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">Un titre sélectionné pour être dégoupillé.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-fr/strings.xml" + line="407" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">1 música selecionada para ser desafixada.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-pt-rBR/strings.xml" + line="410" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">1 música selecionada para ser desafixada.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-pt/strings.xml" + line="410" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">Un titre ajouté à la fin de la file d\'attente de lecture.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-fr/strings.xml" + line="411" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">1 música adicionada ao fim da fila.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-pt-rBR/strings.xml" + line="414" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">1 música adicionada ao fim da fila.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-pt/strings.xml" + line="414" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">Un titre inséré après le titre actuel.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-fr/strings.xml" + line="415" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">1 música inserida após a atual.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-pt-rBR/strings.xml" + line="418" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">1 música inserida após a atual.</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-pt/strings.xml" + line="418" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">Un jour restant à la période d\'essai</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-fr/strings.xml" + line="419" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">Resta 1 dia para o fim do período de teste</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-pt-rBR/strings.xml" + line="422" + column="9"/> + </issue> + + <issue + id="ImpliedQuantity" + message="The quantity `'one'` matches more than one specific number in this locale (0, 1), but the message did not include a formatting argument (such as `%d`). This is usually an internationalization error. See full issue explanation for more." + errorLine1=" <item quantity="one">Resta 1 dia para o fim do período de teste</item>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values-pt/strings.xml" + line="422" + column="9"/> + </issue> + + <issue + id="PluralsCandidate" + message="Formatting %d followed by words ("Artists"): This should probably be a plural rather than a string" + errorLine1=" <string name="parser.artist_count">Got %d Artists.</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values/strings.xml" + line="113" + column="5"/> + </issue> + + <issue + id="PluralsCandidate" + message="Formatting %d followed by words ("tracks"): This should probably be a plural rather than a string" + errorLine1=" <string name="select_album.n_selected">%d tracks selected.</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values/strings.xml" + line="138" + column="5"/> + </issue> + + <issue + id="PluralsCandidate" + message="Formatting %d followed by words ("tracks"): This should probably be a plural rather than a string" + errorLine1=" <string name="select_album.n_unselected">%d tracks unselected.</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values/strings.xml" + line="139" + column="5"/> + </issue> + + <issue + id="PluralsCandidate" + message="Formatting %d followed by words ("trial"): This should probably be a plural rather than a string" + errorLine1=" <string name="select_album.not_licensed">Server not licensed. %d trial days left.</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values/strings.xml" + line="142" + column="5"/> + </issue> + + <issue + id="UnusedQuantity" + message="For language "es" (Spanish) the following quantities are not relevant: `zero`" + errorLine1=" <plurals name="select_album_n_songs">" + errorLine2=" ^"> + <location + file="src/main/res/values-es/strings.xml" + line="393" + column="5"/> + </issue> + + <issue + id="UnusedQuantity" + message="For language "fr" (French) the following quantities are not relevant: `zero`" + errorLine1=" <plurals name="select_album_n_songs">" + errorLine2=" ^"> + <location + file="src/main/res/values-fr/strings.xml" + line="393" + column="5"/> + </issue> + + <issue + id="UnusedQuantity" + message="For language "hu" (Hungarian) the following quantities are not relevant: `zero`" + errorLine1=" <plurals name="select_album_n_songs">" + errorLine2=" ^"> + <location + file="src/main/res/values-hu/strings.xml" + line="393" + column="5"/> + </issue> + + <issue + id="UnusedQuantity" + message="For language "pt" (Portuguese) the following quantities are not relevant: `zero`" + errorLine1=" <plurals name="select_album_n_songs">" + errorLine2=" ^"> + <location + file="src/main/res/values-pt-rBR/strings.xml" + line="396" + column="5"/> + </issue> + + <issue + id="UnusedQuantity" + message="For language "pt" (Portuguese) the following quantities are not relevant: `zero`" + errorLine1=" <plurals name="select_album_n_songs">" + errorLine2=" ^"> + <location + file="src/main/res/values-pt/strings.xml" + line="396" + column="5"/> + </issue> + + <issue + id="AddJavascriptInterface" + message="`WebView.addJavascriptInterface` should not be called with minSdkVersion < 17 for security reasons: JavaScript can use reflection to manipulate application" + errorLine1=" webView.addJavascriptInterface(mJsCallback, JS_INTERFACE_PKG);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.java" + line="90" + column="11"/> + </issue> + + <issue + id="TrulyRandom" + message="Potentially insecure random numbers on Android 4.3 and older. Read https://android-developers.blogspot.com/2013/08/some-securerandom-thoughts.html for more info." + errorLine1=" private Random random = new java.security.SecureRandom();" + errorLine2=" ~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/SelectAlbumActivity.java" + line="86" + column="44"/> + </issue> + + <issue + id="JavascriptInterface" + message="None of the methods in the added interface (JsValueCallback) have been annotated with `@android.webkit.JavascriptInterface`; they will not be visible in API 17" + errorLine1=" webView.addJavascriptInterface(mJsCallback, JS_INTERFACE_PKG);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.java" + line="90" + column="11"/> + </issue> + + <issue + id="AllowAllHostnameVerifier" + message="Using the AllowAllHostnameVerifier HostnameVerifier is unsafe because it always returns true, which could cause insecure network traffic due to trusting TLS/SSL server certificates for wrong hostnames" + errorLine1=" public static final X509HostnameVerifier ALLOW_ALL_HOSTNAME_VERIFIER = new AllowAllHostnameVerifier();" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/service/ssl/SSLSocketFactory.java" + line="142" + column="73"/> + </issue> + + <issue + id="SetJavaScriptEnabled" + message="Using `setJavaScriptEnabled` can introduce XSS vulnerabilities into your application, review carefully." + errorLine1=" webView.getSettings().setJavaScriptEnabled(true);" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/HelpActivity.java" + line="109" + column="3"/> + </issue> + + <issue + id="ExportedContentProvider" + message="Exported content providers can provide access to potentially sensitive data" + errorLine1=" <provider" + errorLine2=" ^"> + <location + file="src/main/AndroidManifest.xml" + line="190" + column="9"/> + </issue> + + <issue + id="ObsoleteLayoutParam" + message="Invalid layout param in a `LinearLayout`: `layout_above`" + errorLine1=" android:layout_above="@+id/bottom">" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/time_span_dialog.xml" + line="12" + column="9"/> + </issue> + + <issue + id="ObsoleteLayoutParam" + message="Invalid layout param in a `LinearLayout`: `layout_below`" + errorLine1=" android:layout_below="@+id/top">" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/time_span_dialog.xml" + line="28" + column="9"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is never < 14" + errorLine1=" if (mUsesCompat && Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="41" + column="28"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="43" + column="20"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is never < 14" + errorLine1=" if (mUsesCompat && Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="51" + column="28"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="53" + column="20"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is never < 14" + errorLine1=" if (mUsesCompat && Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="59" + column="28"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="61" + column="20"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is never < 14" + errorLine1=" if (mUsesCompat && Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="67" + column="28"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="69" + column="20"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is never < 14" + errorLine1=" if (mUsesCompat && Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="77" + column="28"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/compat/ActionBarHelper.java" + line="79" + column="20"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/DraggableDrawer.java" + line="572" + column="13"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/DraggableDrawer.java" + line="580" + column="13"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/DraggableDrawer.java" + line="588" + column="13"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/DraggableDrawer.java" + line="596" + column="13"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" return VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD && mOverScrollEnabled" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshBase.java" + line="211" + column="10"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.java" + line="54" + column="7"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshGridView.java" + line="54" + column="7"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.java" + line="53" + column="7"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshListView.java" + line="207" + column="7"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshScrollView.java" + line="52" + column="7"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshWebView.java" + line="98" + column="7"/> + </issue> + + <issue + id="ObsoleteSdkInt" + message="Unnecessary; SDK_INT is always >= 14" + errorLine1=" if (VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB) {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/internal/ViewCompat.java" + line="44" + column="7"/> + </issue> + + <issue + id="StaticFieldLeak" + message="Do not place Android context classes in static fields; this is a memory leak (and also breaks Instant Run)" + errorLine1=" private static SeekBar progressBar;" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/DownloadActivity.java" + line="102" + column="2"/> + </issue> + + <issue + id="StaticFieldLeak" + message="Do not place Android context classes in static fields (static reference to `ImageLoader` which has field `context` pointing to `Context`); this is a memory leak (and also breaks Instant Run)" + errorLine1=" protected static ImageLoader IMAGE_LOADER;" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/SubsonicTabActivity.java" + line="93" + column="2"/> + </issue> + + <issue + id="StaticFieldLeak" + message="Do not place Android context classes in static fields (static reference to `SubsonicTabActivity` which has field `nowPlayingView` pointing to `View`); this is a memory leak (and also breaks Instant Run)" + errorLine1=" private static SubsonicTabActivity instance;" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/SubsonicTabActivity.java" + line="95" + column="2"/> + </issue> + + <issue + id="StaticFieldLeak" + message="Do not place Android context classes in static fields; this is a memory leak (and also breaks Instant Run)" + errorLine1=" private static Context context;" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/view/UpdateView.java" + line="25" + column="2"/> + </issue> + + <issue + id="FloatMath" + message="Use `java.lang.Math#floor` instead of `android.util.FloatMath#floor()` since it is faster as of API 8" + errorLine1=" float exactContentHeight = FloatMath.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale());" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshWebView.java" + line="115" + column="30"/> + </issue> + + <issue + id="FloatMath" + message="Use `java.lang.Math#floor` instead of `android.util.FloatMath#floor()` since it is faster as of API 8" + errorLine1=" return (int) Math.max(0, FloatMath.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale())" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshWebView.java" + line="161" + column="29"/> + </issue> + + <issue + id="FloatMath" + message="Use `java.lang.Math#sqrt` instead of `android.util.FloatMath#sqrt()` since it is faster as of API 8" + errorLine1=" float hyp = FloatMath.sqrt(dx * dx + dy * dy);" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/Scroller.java" + line="374" + column="25"/> + </issue> + + <issue + id="FloatMath" + message="Use `java.lang.Math#sqrt` instead of `android.util.FloatMath#sqrt()` since it is faster as of API 8" + errorLine1=" float velocity = FloatMath.sqrt(velocityX * velocityX + velocityY * velocityY);" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/java/net/simonvt/menudrawer/Scroller.java" + line="391" + column="26"/> + </issue> + + <issue + id="Overdraw" + message="Possible overdraw: Root element paints background `@drawable/appwidget_dark_bg_trans` with a theme that also paints a background (inferred theme is `@style/Theme.AppCompat`)" + errorLine1=" a:background="@drawable/appwidget_dark_bg_trans"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x1.xml" + line="7" + column="5"/> + </issue> + + <issue + id="Overdraw" + message="Possible overdraw: Root element paints background `@drawable/appwidget_dark_bg_trans` with a theme that also paints a background (inferred theme is `@style/Theme.AppCompat`)" + errorLine1=" a:background="@drawable/appwidget_dark_bg_trans"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x2.xml" + line="7" + column="5"/> + </issue> + + <issue + id="Overdraw" + message="Possible overdraw: Root element paints background `@drawable/appwidget_dark_bg_trans` with a theme that also paints a background (inferred theme is `@style/Theme.AppCompat`)" + errorLine1=" a:background="@drawable/appwidget_dark_bg_trans"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x3.xml" + line="7" + column="5"/> + </issue> + + <issue + id="Overdraw" + message="Possible overdraw: Root element paints background `@drawable/appwidget_dark_bg_trans` with a theme that also paints a background (inferred theme is `@style/Theme.AppCompat`)" + errorLine1=" a:background="@drawable/appwidget_dark_bg_trans" >" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x4.xml" + line="8" + column="5"/> + </issue> + + <issue + id="Overdraw" + message="Possible overdraw: Root element paints background `@color/background_color_dark` with a theme that also paints a background (inferred theme is `@style/Theme.AppCompat`)" + errorLine1=" android:background="@color/background_color_dark"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/notification.xml" + line="9" + column="5"/> + </issue> + + <issue + id="Overdraw" + message="Possible overdraw: Root element paints background `@color/background_color_dark` with a theme that also paints a background (inferred theme is `@style/Theme.AppCompat`)" + errorLine1=" android:background="@color/background_color_dark" >" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/notification_large.xml" + line="9" + column="5"/> + </issue> + + <issue + id="UnusedResources" + message="The resource `R.color.md__transparent` appears to be unused" + errorLine1=" <color name="md__transparent">#00000000</color>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/values/colors.xml" + line="8" + column="12"/> + </issue> + + <issue + id="UnusedResources" + message="The resource `R.drawable.md__list_focused_holo` appears to be unused"> + <location + file="src/main/res/drawable-xhdpi/md__list_focused_holo.9.png"/> + </issue> + + <issue + id="UnusedResources" + message="The resource `R.drawable.md__list_longpressed_holo` appears to be unused"> + <location + file="src/main/res/drawable-xhdpi/md__list_longpressed_holo.9.png"/> + </issue> + + <issue + id="UnusedResources" + message="The resource `R.drawable.md__list_pressed_holo_dark` appears to be unused"> + <location + file="src/main/res/drawable-xhdpi/md__list_pressed_holo_dark.9.png"/> + </issue> + + <issue + id="UnusedResources" + message="The resource `R.drawable.md__list_selector_background_transition_holo_dark` appears to be unused" + errorLine1="<transition xmlns:android="http://schemas.android.com/apk/res/android">" + errorLine2="^"> + <location + file="src/main/res/drawable/md__list_selector_background_transition_holo_dark.xml" + line="17" + column="1"/> + </issue> + + <issue + id="UnusedResources" + message="The resource `R.drawable.md__list_selector_disabled_holo_dark` appears to be unused"> + <location + file="src/main/res/drawable-xhdpi/md__list_selector_disabled_holo_dark.9.png"/> + </issue> + + <issue + id="UnusedResources" + message="The resource `R.drawable.md__list_selector_holo_dark` appears to be unused" + errorLine1="<selector xmlns:android="http://schemas.android.com/apk/res/android">" + errorLine2="^"> + <location + file="src/main/res/drawable/md__list_selector_holo_dark.xml" + line="17" + column="1"/> + </issue> + + <issue + id="UselessParent" + message="This `LinearLayout` layout or its `LinearLayout` parent is useless" + errorLine1=" <LinearLayout" + errorLine2=" ^"> + <location + file="src/main/res/layout/video_details.xml" + line="9" + column="5"/> + </issue> + + <issue + id="TypographyDashes" + message="Replace "--" with an "em dash" character (—, &#8212;) ?" + errorLine1=" <string name="util.no_time">-:--</string>" + errorLine2=" ^"> + <location + file="src/main/res/values-es/strings.xml" + line="328" + column="33"/> + </issue> + + <issue + id="TypographyDashes" + message="Replace "--" with an "em dash" character (—, &#8212;) ?" + errorLine1=" <string name="util.no_time">-:--</string>" + errorLine2=" ^"> + <location + file="src/main/res/values-fr/strings.xml" + line="328" + column="33"/> + </issue> + + <issue + id="TypographyDashes" + message="Replace "--" with an "em dash" character (—, &#8212;) ?" + errorLine1=" <string name="util.no_time">-:--</string>" + errorLine2=" ^"> + <location + file="src/main/res/values-hu/strings.xml" + line="328" + column="33"/> + </issue> + + <issue + id="TypographyDashes" + message="Replace "--" with an "em dash" character (—, &#8212;) ?" + errorLine1=" <string name="util.no_time">-:--</string>" + errorLine2=" ^"> + <location + file="src/main/res/values-pt-rBR/strings.xml" + line="331" + column="33"/> + </issue> + + <issue + id="TypographyDashes" + message="Replace "--" with an "em dash" character (—, &#8212;) ?" + errorLine1=" <string name="util.no_time">-:--</string>" + errorLine2=" ^"> + <location + file="src/main/res/values-pt/strings.xml" + line="331" + column="33"/> + </issue> + + <issue + id="TypographyDashes" + message="Replace "--" with an "em dash" character (—, &#8212;) ?" + errorLine1=" <string name="util.no_time">-:--</string>" + errorLine2=" ^"> + <location + file="src/main/res/values/strings.xml" + line="331" + column="33"/> + </issue> + + <issue + id="IconColors" + message="Action Bar icons should use a single gray color (`#333333` for light themes (with 60%/30% opacity for enabled/disabled), and `#FFFFFF` with opacity 80%/30% for dark themes"> + <location + file="src/main/res/drawable-xhdpi/ic_menu_pin.png"/> + </issue> + + <issue + id="IconColors" + message="Notification icons must be entirely white"> + <location + file="src/main/res/drawable-hdpi/ic_stat_play_light.png"/> + </issue> + + <issue + id="IconColors" + message="Notification icons must be entirely white"> + <location + file="src/main/res/drawable-hdpi-v11/ic_stat_ultrasonic.png"/> + <location + file="src/main/java/org/moire/ultrasonic/service/DownloadServiceImpl.java" + line="2076" + column="30"/> + </issue> + + <issue + id="IconColors" + message="Notification icons must be entirely white"> + <location + file="src/main/res/drawable-hdpi-v9/ic_stat_ultrasonic.png"/> + <location + file="src/main/java/org/moire/ultrasonic/service/DownloadServiceImpl.java" + line="2076" + column="30"/> + </issue> + + <issue + id="IconColors" + message="Notification icons must be entirely white"> + <location + file="src/main/res/drawable-hdpi/ic_stat_ultrasonic.png"/> + <location + file="src/main/java/org/moire/ultrasonic/service/DownloadServiceImpl.java" + line="2076" + column="30"/> + </issue> + + <issue + id="IconColors" + message="Notification icons must be entirely white"> + <location + file="src/main/res/drawable-ldpi-v11/ic_stat_ultrasonic.png"/> + <location + file="src/main/java/org/moire/ultrasonic/service/DownloadServiceImpl.java" + line="2076" + column="30"/> + </issue> + + <issue + id="IconColors" + message="Notification icons must be entirely white"> + <location + file="src/main/res/drawable-ldpi-v9/ic_stat_ultrasonic.png"/> + <location + file="src/main/java/org/moire/ultrasonic/service/DownloadServiceImpl.java" + line="2076" + column="30"/> + </issue> + + <issue + id="IconColors" + message="Notification icons must be entirely white"> + <location + file="src/main/res/drawable-ldpi/ic_stat_ultrasonic.png"/> + <location + file="src/main/java/org/moire/ultrasonic/service/DownloadServiceImpl.java" + line="2076" + column="30"/> + </issue> + + <issue + id="IconColors" + message="Notification icons must be entirely white"> + <location + file="src/main/res/drawable-mdpi-v11/ic_stat_ultrasonic.png"/> + <location + file="src/main/java/org/moire/ultrasonic/service/DownloadServiceImpl.java" + line="2076" + column="30"/> + </issue> + + <issue + id="IconColors" + message="Notification icons must be entirely white"> + <location + file="src/main/res/drawable-mdpi-v9/ic_stat_ultrasonic.png"/> + <location + file="src/main/java/org/moire/ultrasonic/service/DownloadServiceImpl.java" + line="2076" + column="30"/> + </issue> + + <issue + id="IconColors" + message="Notification icons must be entirely white"> + <location + file="src/main/res/drawable-mdpi/ic_stat_ultrasonic.png"/> + <location + file="src/main/java/org/moire/ultrasonic/service/DownloadServiceImpl.java" + line="2076" + column="30"/> + </issue> + + <issue + id="IconColors" + message="Notification icons must be entirely white"> + <location + file="src/main/res/drawable-xhdpi-v11/ic_stat_ultrasonic.png"/> + <location + file="src/main/java/org/moire/ultrasonic/service/DownloadServiceImpl.java" + line="2076" + column="30"/> + </issue> + + <issue + id="IconColors" + message="Notification icons must be entirely white"> + <location + file="src/main/res/drawable-xhdpi-v9/ic_stat_ultrasonic.png"/> + <location + file="src/main/java/org/moire/ultrasonic/service/DownloadServiceImpl.java" + line="2076" + column="30"/> + </issue> + + <issue + id="IconColors" + message="Notification icons must be entirely white"> + <location + file="src/main/res/drawable-xhdpi/ic_stat_ultrasonic.png"/> + <location + file="src/main/java/org/moire/ultrasonic/service/DownloadServiceImpl.java" + line="2076" + column="30"/> + </issue> + + <issue + id="IconDensities" + message="Missing the following drawables in `drawable-hdpi`: ic_contact_picture.png, ic_menu_pin.png, md__list_focused_holo.9.png, md__list_longpressed_holo.9.png, md__list_pressed_holo_dark.9.png... (3 more)"> + <location + file="src/main/res/drawable-hdpi"/> + </issue> + + <issue + id="IconDensities" + message="Missing the following drawables in `drawable-mdpi`: ic_contact_picture.png, ic_menu_pin.png, ic_stat_play_dark.png, ic_stat_play_light.png, list_focused_holo.9.png... (17 more)"> + <location + file="src/main/res/drawable-mdpi"/> + </issue> + + <issue + id="IconDensities" + message="Missing the following drawables in `drawable-xhdpi`: ic_contact_picture.png, ic_stat_play_dark.png, ic_stat_play_light.png, list_focused_holo.9.png, list_longpressed_holo.9.png... (9 more)"> + <location + file="src/main/res/drawable-xhdpi"/> + </issue> + + <issue + id="IconDensities" + message="Missing the following drawables in `drawable-xxhdpi`: ic_drag_queue.png, ic_menu_pin.png, ic_stat_play_dark.png, ic_stat_play_light.png, ic_stat_ultrasonic.png... (19 more)"> + <location + file="src/main/res/drawable-xxhdpi"/> + </issue> + + <issue + id="IconDuplicates" + message="The following unrelated icon files have identical contents: list_longpressed_holo.9.png, md__list_longpressed_holo.9.png"> + <location + file="src/main/res/drawable-xhdpi/md__list_longpressed_holo.9.png"/> + <location + file="src/main/res/drawable-hdpi/list_longpressed_holo.9.png"/> + </issue> + + <issue + id="IconDuplicates" + message="The following unrelated icon files have identical contents: list_pressed_holo_dark.9.png, list_pressed_holo_light.9.png, md__list_pressed_holo_dark.9.png"> + <location + file="src/main/res/drawable-xhdpi/md__list_pressed_holo_dark.9.png"/> + <location + file="src/main/res/drawable-hdpi/list_pressed_holo_light.9.png"/> + <location + file="src/main/res/drawable-hdpi/list_pressed_holo_dark.9.png"/> + </issue> + + <issue + id="IconMissingDensityFolder" + message="Missing density variation folders in `src/main/res`: drawable-xxhdpi"> + <location + file="src/main/res"/> + </issue> + + <issue + id="GoogleAppIndexingWarning" + message="App is not indexable by Google Search; consider adding at least one Activity with an ACTION-VIEW intent filter. See issue explanation for more details." + errorLine1=" <application" + errorLine2=" ^"> + <location + file="src/main/AndroidManifest.xml" + line="23" + column="5"/> + </issue> + + <issue + id="ViewConstructor" + message="Custom view `AlbumView` is missing constructor used by tools: `(Context)` or `(Context,AttributeSet)` or `(Context,AttributeSet,int)`" + errorLine1="public class AlbumView extends UpdateView" + errorLine2=" ~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/view/AlbumView.java" + line="41" + column="14"/> + </issue> + + <issue + id="ViewConstructor" + message="Custom view `RotateLoadingLayout` is missing constructor used by tools: `(Context)` or `(Context,AttributeSet)` or `(Context,AttributeSet,int)`" + errorLine1="public class RotateLoadingLayout extends LoadingLayout {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.java" + line="30" + column="14"/> + </issue> + + <issue + id="ClickableViewAccessibility" + message="`org/moire/ultrasonic/view/AutoRepeatButton$2#onTouch` should call `View#performClick` when a click is detected" + errorLine1=" public boolean onTouch(View v, MotionEvent event)" + errorLine2=" ~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/view/AutoRepeatButton.java" + line="38" + column="19"/> + </issue> + + <issue + id="ClickableViewAccessibility" + message="`org/moire/ultrasonic/activity/DownloadActivity$1#onTouch` should call `View#performClick` when a click is detected" + errorLine1=" public boolean onTouch(View view, MotionEvent me)" + errorLine2=" ~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/DownloadActivity.java" + line="168" + column="19"/> + </issue> + + <issue + id="ClickableViewAccessibility" + message="`org/moire/ultrasonic/activity/DownloadActivity$15#onTouch` should call `View#performClick` when a click is detected" + errorLine1=" public boolean onTouch(final View view, final MotionEvent motionEvent)" + errorLine2=" ~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/DownloadActivity.java" + line="486" + column="20"/> + </issue> + + <issue + id="ClickableViewAccessibility" + message="`com/mobeta/android/dslv/DragSortController#onTouch` should call `View#performClick` when a click is detected" + errorLine1=" public boolean onTouch(View v, MotionEvent ev) {" + errorLine2=" ~~~~~~~"> + <location + file="src/main/java/com/mobeta/android/dslv/DragSortController.java" + line="238" + column="20"/> + </issue> + + <issue + id="ClickableViewAccessibility" + message="`org/moire/ultrasonic/activity/SubsonicTabActivity$SwipeDetector#onTouch` should call `View#performClick` when a click is detected" + errorLine1=" public boolean onTouch(View v, MotionEvent event)" + errorLine2=" ~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/SubsonicTabActivity.java" + line="1388" + column="18"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/album_buttons.xml" + line="9" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/album_buttons.xml" + line="17" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/album_buttons.xml" + line="25" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/album_buttons.xml" + line="33" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/album_buttons.xml" + line="41" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/album_buttons.xml" + line="49" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/album_buttons.xml" + line="57" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/album_buttons.xml" + line="65" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/album_buttons.xml" + line="73" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/album_list_item.xml" + line="9" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/album_list_item.xml" + line="42" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x1.xml" + line="10" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x1.xml" + line="76" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x1.xml" + line="85" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x1.xml" + line="94" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x2.xml" + line="10" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x2.xml" + line="97" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x2.xml" + line="106" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x2.xml" + line="115" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x3.xml" + line="10" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x3.xml" + line="82" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x3.xml" + line="91" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x3.xml" + line="100" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x4.xml" + line="10" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x4.xml" + line="83" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x4.xml" + line="92" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/appwidget4x4.xml" + line="101" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/chat.xml" + line="40" + column="9"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/chat_item.xml" + line="7" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="64" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView a:id="@+id/help_back"" + errorLine2=" ^"> + <location + file="src/main/res/layout/help.xml" + line="12" + column="9"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView a:id="@+id/help_stop"" + errorLine2=" ^"> + <location + file="src/main/res/layout/help.xml" + line="18" + column="9"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView a:id="@+id/help_forward"" + errorLine2=" ^"> + <location + file="src/main/res/layout/help.xml" + line="24" + column="9"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView a:layout_width="wrap_content" a:layout_height="wrap_content"" + errorLine2=" ^"> + <location + file="src/main/res/layout/main_buttons.xml" + line="10" + column="3"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1="<ImageView" + errorLine2="^"> + <location + file="src/main/res/layout/media_buttons.xml" + line="12" + column="1"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/media_buttons.xml" + line="32" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/media_buttons.xml" + line="42" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/media_buttons.xml" + line="52" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/media_buttons.xml" + line="72" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/notification.xml" + line="12" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/notification.xml" + line="75" + column="9"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/notification.xml" + line="85" + column="9"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/notification.xml" + line="95" + column="9"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/notification.xml" + line="105" + column="9"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/notification_large.xml" + line="11" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/notification_large.xml" + line="48" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/notification_large.xml" + line="99" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/notification_large.xml" + line="108" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageButton" + errorLine2=" ^"> + <location + file="src/main/res/layout/notification_large.xml" + line="117" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/now_playing.xml" + line="20" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/now_playing.xml" + line="56" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/pull_to_refresh_header_horizontal.xml" + line="13" + column="9"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/pull_to_refresh_header_vertical.xml" + line="18" + column="13"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/select_artist_header.xml" + line="12" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/song_list_item.xml" + line="18" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/song_list_item.xml" + line="28" + column="5"/> + </issue> + + <issue + id="ContentDescription" + message="[Accessibility] Missing `contentDescription` attribute on image" + errorLine1=" <ImageView" + errorLine2=" ^"> + <location + file="src/main/res/layout/video_list_item.xml" + line="19" + column="5"/> + </issue> + + <issue + id="SetTextI18n" + message="Do not concatenate text displayed with `setText`. Use resource string with placeholders." + errorLine1=" freqTextView.setText((equalizer.getCenterFreq(band) / 1000) + " Hz");" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/EqualizerActivity.java" + line="211" + column="27"/> + </issue> + + <issue + id="SetTextI18n" + message="String literal in `setText` can not be translated. Use Android resources instead." + errorLine1=" freqTextView.setText((equalizer.getCenterFreq(band) / 1000) + " Hz");" + errorLine2=" ~~~~~"> + <location + file="src/main/java/org/moire/ultrasonic/activity/EqualizerActivity.java" + line="211" + column="68"/> + </issue> + + <issue + id="HardcodedText" + message="[I18N] Hardcoded string "Title", should use `@string` resource" + errorLine1=" a:text="Title"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x1.xml" + line="46" + column="17"/> + </issue> + + <issue + id="HardcodedText" + message="[I18N] Hardcoded string "Artist", should use `@string` resource" + errorLine1=" a:text="Artist"" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x1.xml" + line="64" + column="17"/> + </issue> + + <issue + id="HardcodedText" + message="[I18N] Hardcoded string "Title", should use `@string` resource" + errorLine1=" a:text="Title"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x2.xml" + line="48" + column="17"/> + </issue> + + <issue + id="HardcodedText" + message="[I18N] Hardcoded string "Artist", should use `@string` resource" + errorLine1=" a:text="Artist"" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x2.xml" + line="65" + column="17"/> + </issue> + + <issue + id="HardcodedText" + message="[I18N] Hardcoded string "Album", should use `@string` resource" + errorLine1=" a:text="Album"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x2.xml" + line="82" + column="17"/> + </issue> + + <issue + id="HardcodedText" + message="[I18N] Hardcoded string "Title", should use `@string` resource" + errorLine1=" a:text="Title"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x3.xml" + line="50" + column="17"/> + </issue> + + <issue + id="HardcodedText" + message="[I18N] Hardcoded string "Artist", should use `@string` resource" + errorLine1=" a:text="Artist"" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x3.xml" + line="66" + column="17"/> + </issue> + + <issue + id="HardcodedText" + message="[I18N] Hardcoded string "Title", should use `@string` resource" + errorLine1=" a:text="Title"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x4.xml" + line="51" + column="17"/> + </issue> + + <issue + id="HardcodedText" + message="[I18N] Hardcoded string "Artist", should use `@string` resource" + errorLine1=" a:text="Artist"" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x4.xml" + line="67" + column="17"/> + </issue> + + <issue + id="HardcodedText" + message="[I18N] Hardcoded string "0 / 0", should use `@string` resource" + errorLine1=" a:text="0 / 0"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/download_button_bar_flipper.xml" + line="43" + column="9"/> + </issue> + + <issue + id="HardcodedText" + message="[I18N] Hardcoded string "0 dB", should use `@string` resource" + errorLine1=" a:text="0 dB" +" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/equalizer_bar.xml" + line="19" + column="13"/> + </issue> + + <issue + id="HardcodedText" + message="[I18N] Hardcoded string "Share", should use `@string` resource" + errorLine1=" a:title="Share"/>" + errorLine2=" ~~~~~~~~~~~~~~~"> + <location + file="src/main/res/menu/select_song_context.xml" + line="24" + column="9"/> + </issue> + + <issue + id="RtlCompat" + message="To support older versions than API 17 (project specifies 14) you should *also* add `a:layout_toRightOf="@id/chat_avatar"`" + errorLine1=" a:layout_toEndOf="@id/chat_avatar"" + errorLine2=" ~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item.xml" + line="16" + column="9"/> + </issue> + + <issue + id="RtlCompat" + message="To support older versions than API 17 (project specifies 14) you should *also* add `a:layout_alignParentRight="false"`" + errorLine1=" a:layout_alignParentEnd="false"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="12" + column="9"/> + </issue> + + <issue + id="RtlCompat" + message="To support older versions than API 17 (project specifies 14) you should *also* add `a:layout_toLeftOf="@id/chat_avatar"`" + errorLine1=" a:layout_toStartOf="@id/chat_avatar"" + errorLine2=" ~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="13" + column="9"/> + </issue> + + <issue + id="RtlCompat" + message="To support older versions than API 17 (project specifies 14) you should *also* add `a:layout_alignParentRight="true"`" + errorLine1=" a:layout_alignParentEnd="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="68" + column="9"/> + </issue> + + <issue + id="RtlCompat" + message="To support older versions than API 17 (project specifies 14) you should *also* add `a:layout_toLeftOf="@id/chat_avatar"`" + errorLine1=" a:layout_toStartOf="@id/chat_avatar"/>" + errorLine2=" ~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="69" + column="9"/> + </issue> + + <issue + id="RtlCompat" + message="To support older versions than API 17 (project specifies 14) you should *also* add `android:layout_alignParentRight="false"`" + errorLine1=" android:layout_alignParentEnd="false"/>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/time_span_dialog.xml" + line="40" + column="13"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:paddingLeft="3dip"/>" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/album_list_item.xml" + line="14" + column="13"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingRight` you should probably also define `paddingLeft` for right-to-left symmetry" + errorLine1=" a:paddingRight="3dip" />" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/album_list_item.xml" + line="50" + column="13"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:paddingLeft="5dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x3.xml" + line="64" + column="17"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:paddingLeft="5dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x4.xml" + line="65" + column="17"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:paddingLeft="6dp" a:layout_width="fill_parent" a:layout_height="wrap_content"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/main_buttons.xml" + line="7" + column="3"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:gravity="center_vertical" a:paddingLeft="6dp" a:textAllCaps="true"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/main_buttons.xml" + line="31" + column="31"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:gravity="center_vertical" a:paddingLeft="6dp" a:textAllCaps="true"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/main_buttons.xml" + line="52" + column="31"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:gravity="center_vertical" a:paddingLeft="6dp" a:textAllCaps="true"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/main_buttons.xml" + line="68" + column="31"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:gravity="center_vertical" a:paddingLeft="6dp" a:textAllCaps="true"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/main_buttons.xml" + line="114" + column="31"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" android:paddingLeft="12dip"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/notification.xml" + line="26" + column="9"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingStart` you should probably also define `paddingEnd` for right-to-left symmetry" + errorLine1=" android:paddingStart="12dp"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/notification.xml" + line="27" + column="9"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" android:paddingLeft="11.0dip" >" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/now_playing.xml" + line="33" + column="9"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:paddingLeft="4dp"/>" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/search_buttons.xml" + line="28" + column="13"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:paddingLeft="4dp"/>" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/search_buttons.xml" + line="40" + column="13"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:paddingLeft="4dp"/>" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/search_buttons.xml" + line="52" + column="13"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingRight` you should probably also define `paddingLeft` for right-to-left symmetry" + errorLine1=" a:paddingRight="4dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="23" + column="9"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingRight` you should probably also define `paddingLeft` for right-to-left symmetry" + errorLine1=" a:paddingRight="4dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="35" + column="9"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingRight` you should probably also define `paddingLeft` for right-to-left symmetry" + errorLine1=" a:paddingRight="4dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="46" + column="9"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingRight` you should probably also define `paddingLeft` for right-to-left symmetry" + errorLine1=" a:paddingRight="4dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="57" + column="9"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingRight` you should probably also define `paddingLeft` for right-to-left symmetry" + errorLine1=" a:paddingRight="4dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="68" + column="9"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingRight` you should probably also define `paddingLeft` for right-to-left symmetry" + errorLine1=" a:paddingRight="4dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="79" + column="9"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:paddingLeft="6dp"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_artist_header.xml" + line="9" + column="5"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:paddingLeft="4dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/share_list_item.xml" + line="41" + column="13"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingRight` you should probably also define `paddingLeft` for right-to-left symmetry" + errorLine1=" a:paddingRight="6dip"/>" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="41" + column="13"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:paddingLeft="4dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="57" + column="13"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:paddingLeft="3dip" />" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_list_item.xml" + line="14" + column="9"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingRight` you should probably also define `paddingLeft` for right-to-left symmetry" + errorLine1=" a:paddingRight="3dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_list_item.xml" + line="25" + column="9"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingRight` you should probably also define `paddingLeft` for right-to-left symmetry" + errorLine1=" a:paddingRight="3dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_list_item.xml" + line="35" + column="9"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingLeft` you should probably also define `paddingRight` for right-to-left symmetry" + errorLine1=" a:paddingLeft="1dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/video_list_item.xml" + line="13" + column="9"/> + </issue> + + <issue + id="RtlSymmetry" + message="When you define `paddingRight` you should probably also define `paddingLeft` for right-to-left symmetry" + errorLine1=" a:paddingRight="3dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/video_list_item.xml" + line="26" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`Gravity.START`" instead of "`Gravity.LEFT`" to ensure correct behavior in right-to-left locales" + errorLine1=" lp.gravity = scrollDirection == Orientation.VERTICAL ? Gravity.TOP : Gravity.LEFT;" + errorLine2=" ~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/internal/LoadingLayout.java" + line="92" + column="82"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`Gravity.END`" instead of "`Gravity.RIGHT`" to ensure correct behavior in right-to-left locales" + errorLine1=" lp.gravity = scrollDirection == Orientation.VERTICAL ? Gravity.BOTTOM : Gravity.RIGHT;" + errorLine2=" ~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/internal/LoadingLayout.java" + line="102" + column="85"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`Gravity.END`" instead of "`Gravity.RIGHT`" to ensure correct behavior in right-to-left locales" + errorLine1=" params.gravity = Gravity.TOP | Gravity.RIGHT;" + errorLine2=" ~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.java" + line="344" + column="43"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`Gravity.END`" instead of "`Gravity.RIGHT`" to ensure correct behavior in right-to-left locales" + errorLine1=" params.gravity = Gravity.BOTTOM | Gravity.RIGHT;" + errorLine2=" ~~~~~"> + <location + file="src/main/java/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.java" + line="359" + column="46"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="left|center_vertical"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/album_list_item.xml" + line="13" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="3dip"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="3dip"/>" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/album_list_item.xml" + line="14" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="left|center_vertical"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/album_list_item.xml" + line="21" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="6dip"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="6dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/album_list_item.xml" + line="22" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="3dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="3dip">" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/album_list_item.xml" + line="23" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="3dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="3dip" />" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/album_list_item.xml" + line="50" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="5dip"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="5dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x3.xml" + line="64" + column="17"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="5dip"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="5dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/appwidget4x4.xml" + line="65" + column="17"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="left"" + errorLine2=" ~~~~"> + <location + file="src/main/res/layout/chat_item.xml" + line="30" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:gravity="center_vertical|left"/>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item.xml" + line="31" + column="24"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:gravity="center_vertical|left"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item.xml" + line="39" + column="24"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="left">" + errorLine2=" ~~~~"> + <location + file="src/main/res/layout/chat_item.xml" + line="40" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_marginStart="6dip"` to better support right-to-left layouts" + errorLine1=" a:layout_marginLeft="6dip"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item.xml" + line="46" + column="17"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:gravity="left"/>" + errorLine2=" ~~~~"> + <location + file="src/main/res/layout/chat_item.xml" + line="50" + column="28"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:gravity="left"/>" + errorLine2=" ~~~~"> + <location + file="src/main/res/layout/chat_item.xml" + line="63" + column="28"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="right"" + errorLine2=" ~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="11" + column="27"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:gravity="center_vertical|right">" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="14" + column="20"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_marginEnd="6dip"` to better support right-to-left layouts" + errorLine1=" a:layout_marginRight="6dip"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="20" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:gravity="center_vertical|right"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="21" + column="24"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="right"" + errorLine2=" ~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="22" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="right|end"" + errorLine2=" ~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="34" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:gravity="center_vertical|right">" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="35" + column="24"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_marginStart="6dip"` to better support right-to-left layouts" + errorLine1=" a:layout_marginLeft="6dip"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="41" + column="17"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:gravity="center_vertical|right"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="43" + column="28"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="right"/>" + errorLine2=" ~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="46" + column="35"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:gravity="center_vertical|right"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="59" + column="28"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="right"/>" + errorLine2=" ~~~~~"> + <location + file="src/main/res/layout/chat_item_reverse.xml" + line="60" + column="35"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:gravity="left"" + errorLine2=" ~~~~"> + <location + file="src/main/res/layout-land/download.xml" + line="18" + column="24"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:gravity="left"" + errorLine2=" ~~~~"> + <location + file="src/main/res/layout-port/download.xml" + line="18" + column="24"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_alignParentStart="true"` to better support right-to-left layouts" + errorLine1=" a:layout_alignParentLeft="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/download_button_bar_flipper.xml" + line="31" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_marginEnd="6dip"` to better support right-to-left layouts" + errorLine1=" a:layout_marginRight="6dip"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/download_button_bar_flipper.xml" + line="32" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_alignParentStart="true"` to better support right-to-left layouts" + errorLine1=" a:layout_alignParentLeft="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/download_button_bar_flipper.xml" + line="40" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_marginEnd="6dip"` to better support right-to-left layouts" + errorLine1=" a:layout_marginRight="6dip"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/download_button_bar_flipper.xml" + line="42" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_alignParentEnd="true"` to better support right-to-left layouts" + errorLine1=" a:layout_alignParentRight="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/download_button_bar_flipper.xml" + line="50" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_marginStart="6dip"` to better support right-to-left layouts" + errorLine1=" a:layout_marginLeft="6dip"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/download_button_bar_flipper.xml" + line="51" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_alignParentEnd="true"` to better support right-to-left layouts" + errorLine1=" a:layout_alignParentRight="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/download_button_bar_flipper.xml" + line="59" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_marginStart="6dip"` to better support right-to-left layouts" + errorLine1=" a:layout_marginLeft="6dip"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/download_button_bar_flipper.xml" + line="61" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_toStartOf="@+id/download_duration"` to better support right-to-left layouts" + errorLine1=" a:layout_toLeftOf="@+id/download_duration"" + errorLine2=" ~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/download_button_bar_flipper.xml" + line="70" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_toEndOf="@+id/download_position"` to better support right-to-left layouts" + errorLine1=" a:layout_toRightOf="@+id/download_position"" + errorLine2=" ~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/download_button_bar_flipper.xml" + line="71" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_alignParentStart="true"` to better support right-to-left layouts" + errorLine1=" a:layout_alignParentLeft="true" +" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/equalizer_bar.xml" + line="14" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:gravity="right" +" + errorLine2=" ~~~~~"> + <location + file="src/main/res/layout/equalizer_bar.xml" + line="22" + column="24"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_alignParentEnd="true"` to better support right-to-left layouts" + errorLine1=" a:layout_alignParentRight="true" +" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/equalizer_bar.xml" + line="26" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_toEndOf="@+id/equalizer.frequency"` to better support right-to-left layouts" + errorLine1=" a:layout_toRightOf="@+id/equalizer.frequency" +" + errorLine2=" ~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/equalizer_bar.xml" + line="27" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="6dp"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="6dp" a:layout_width="fill_parent" a:layout_height="wrap_content"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/main_buttons.xml" + line="7" + column="3"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_marginStart="10dip"` to better support right-to-left layouts" + errorLine1=" a:layout_marginLeft="10dip" a:layout_marginTop="6dip"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/main_buttons.xml" + line="18" + column="5"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_marginStart="10dip"` to better support right-to-left layouts" + errorLine1=" a:layout_height="wrap_content" a:layout_marginLeft="10dip"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/main_buttons.xml" + line="22" + column="36"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="6dp"` to better support right-to-left layouts" + errorLine1=" a:gravity="center_vertical" a:paddingLeft="6dp" a:textAllCaps="true"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/main_buttons.xml" + line="31" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="6dp"` to better support right-to-left layouts" + errorLine1=" a:gravity="center_vertical" a:paddingLeft="6dp" a:textAllCaps="true"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/main_buttons.xml" + line="52" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="6dp"` to better support right-to-left layouts" + errorLine1=" a:gravity="center_vertical" a:paddingLeft="6dp" a:textAllCaps="true"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/main_buttons.xml" + line="68" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="6dp"` to better support right-to-left layouts" + errorLine1=" a:gravity="center_vertical" a:paddingLeft="6dp" a:textAllCaps="true"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/main_buttons.xml" + line="114" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="2dip"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="2dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/media_buttons.xml" + line="19" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="8dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="8dip"/>" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/media_buttons.xml" + line="20" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="8dip"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="8dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/media_buttons.xml" + line="79" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="2dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="2dip"/>" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/media_buttons.xml" + line="80" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:drawableStart="?attr/home"` to better support right-to-left layouts" + errorLine1=" android:drawableLeft="?attr/home"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/menu_main.xml" + line="25" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:drawableStart="?attr/browse"` to better support right-to-left layouts" + errorLine1=" android:drawableLeft="?attr/browse"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/menu_main.xml" + line="33" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:drawableStart="?attr/search"` to better support right-to-left layouts" + errorLine1=" android:drawableLeft="?attr/search"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/menu_main.xml" + line="41" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:drawableStart="?attr/playlists"` to better support right-to-left layouts" + errorLine1=" android:drawableLeft="?attr/playlists"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/menu_main.xml" + line="49" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:drawableStart="?attr/share"` to better support right-to-left layouts" + errorLine1=" android:drawableLeft="?attr/share"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/menu_main.xml" + line="57" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:drawableStart="?attr/bookmark"` to better support right-to-left layouts" + errorLine1=" android:drawableLeft="?attr/bookmark"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/menu_main.xml" + line="65" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:drawableStart="?attr/chat"` to better support right-to-left layouts" + errorLine1=" android:drawableLeft="?attr/chat"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/menu_main.xml" + line="73" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:drawableStart="?attr/media_play"` to better support right-to-left layouts" + errorLine1=" android:drawableLeft="?attr/media_play"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/menu_main.xml" + line="81" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:drawableStart="?attr/podcasts"` to better support right-to-left layouts" + errorLine1=" android:drawableLeft="?attr/podcasts"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/menu_main.xml" + line="89" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:drawableStart="?attr/settings"` to better support right-to-left layouts" + errorLine1=" android:drawableLeft="?attr/settings"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/menu_main.xml" + line="104" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:drawableStart="?attr/about"` to better support right-to-left layouts" + errorLine1=" android:drawableLeft="?attr/about"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/menu_main.xml" + line="112" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:drawableStart="?attr/exit"` to better support right-to-left layouts" + errorLine1=" android:drawableLeft="?attr/exit"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/menu_main.xml" + line="120" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:paddingStart="11.0dip"` to better support right-to-left layouts" + errorLine1=" android:paddingLeft="11.0dip" >" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/now_playing.xml" + line="33" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" android:layout_gravity="left"" + errorLine2=" ~~~~"> + <location + file="src/main/res/layout/now_playing.xml" + line="39" + column="37"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" android:layout_gravity="left"" + errorLine2=" ~~~~"> + <location + file="src/main/res/layout/now_playing.xml" + line="49" + column="37"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" android:layout_gravity="center|right"" + errorLine2=" ~~~~~~~~~~~~"> + <location + file="src/main/res/layout/now_playing.xml" + line="60" + column="33"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:layout_marginEnd="5dip"` to better support right-to-left layouts" + errorLine1=" android:layout_marginRight="5dip"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/now_playing.xml" + line="61" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" android:gravity="left|center_vertical" +" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/playlist_list_item.xml" + line="13" + column="20"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" android:layout_gravity="left|center_vertical" >" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/pull_to_refresh_header_vertical.xml" + line="16" + column="37"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:drawableStart="?attr/search"` to better support right-to-left layouts" + errorLine1=" a:drawableLeft="?attr/search"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/search_buttons.xml" + line="13" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="4dp"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="4dp"/>" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/search_buttons.xml" + line="28" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="4dp"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="4dp"/>" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/search_buttons.xml" + line="40" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="4dp"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="4dp"/>" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/search_buttons.xml" + line="52" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_alignParentStart="true"` to better support right-to-left layouts" + errorLine1=" a:layout_alignParentLeft="true"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="10" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_marginEnd="10dip"` to better support right-to-left layouts" + errorLine1=" a:layout_marginRight="10dip"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="12" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_toEndOf="@+id/select_album_art"` to better support right-to-left layouts" + errorLine1=" a:layout_toRightOf="@+id/select_album_art"" + errorLine2=" ~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="21" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="4dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="4dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="23" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_toEndOf="@+id/select_album_art"` to better support right-to-left layouts" + errorLine1=" a:layout_toRightOf="@+id/select_album_art"" + errorLine2=" ~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="33" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="4dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="4dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="35" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_toEndOf="@+id/select_album_art"` to better support right-to-left layouts" + errorLine1=" a:layout_toRightOf="@+id/select_album_art"" + errorLine2=" ~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="44" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="4dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="4dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="46" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_toEndOf="@+id/select_album_art"` to better support right-to-left layouts" + errorLine1=" a:layout_toRightOf="@+id/select_album_art"" + errorLine2=" ~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="55" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="4dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="4dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="57" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_toEndOf="@+id/select_album_art"` to better support right-to-left layouts" + errorLine1=" a:layout_toRightOf="@+id/select_album_art"" + errorLine2=" ~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="66" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="4dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="4dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="68" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_toEndOf="@+id/select_album_art"` to better support right-to-left layouts" + errorLine1=" a:layout_toRightOf="@+id/select_album_art"" + errorLine2=" ~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="77" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="4dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="4dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_album_header.xml" + line="79" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="6dp"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="6dp"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_artist_header.xml" + line="9" + column="5"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_marginStart="10dip"` to better support right-to-left layouts" + errorLine1=" a:layout_marginLeft="10dip"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_artist_header.xml" + line="27" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_marginStart="10dip"` to better support right-to-left layouts" + errorLine1=" a:layout_marginLeft="10dip"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/select_artist_header.xml" + line="36" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="left|center_vertical"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/share_list_item.xml" + line="22" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="left|center_vertical"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/share_list_item.xml" + line="38" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="4dip"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="4dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/share_list_item.xml" + line="41" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="left|center_vertical"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="19" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="left|center_vertical"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="26" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="4dip"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="4dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="30" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="2dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="2dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="31" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="right|center_vertical"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="39" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="6dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="6dip"/>" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="41" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="left|center_vertical"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="54" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="4dip"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="4dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="57" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="right|center_vertical"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="65" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="3dip"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="3dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="66" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="9dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="9dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_details.xml" + line="67" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="3dip"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="3dip" />" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_list_item.xml" + line="14" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="3dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="3dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_list_item.xml" + line="25" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="3dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="3dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/song_list_item.xml" + line="35" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:layout_marginEnd="6dp"` to better support right-to-left layouts" + errorLine1=" a:layout_marginRight="6dp" />" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/tab_progress.xml" + line="15" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" android:gravity="left"" + errorLine2=" ~~~~"> + <location + file="src/main/res/layout/time_span_dialog.xml" + line="38" + column="30"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:layout_toEndOf="@+id/timeSpanEditText"` to better support right-to-left layouts" + errorLine1=" android:layout_toRightOf="@+id/timeSpanEditText"/>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/time_span_dialog.xml" + line="47" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:layout_marginStart="4dp"` to better support right-to-left layouts" + errorLine1=" android:layout_marginLeft="4dp"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/update_playlist.xml" + line="15" + column="4"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:layout_marginStart="4dp"` to better support right-to-left layouts" + errorLine1=" android:layout_marginLeft="4dp"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/update_playlist.xml" + line="24" + column="4"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:layout_marginStart="4dp"` to better support right-to-left layouts" + errorLine1=" android:layout_marginLeft="4dp"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/update_playlist.xml" + line="37" + column="4"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:layout_marginStart="4dp"` to better support right-to-left layouts" + errorLine1=" android:layout_marginLeft="4dp"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/update_playlist.xml" + line="46" + column="4"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:layout_marginStart="4dp"` to better support right-to-left layouts" + errorLine1=" android:layout_marginLeft="4dp"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/update_playlist.xml" + line="59" + column="4"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `android:layout_marginStart="4dp"` to better support right-to-left layouts" + errorLine1=" android:layout_marginLeft="4dp"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/update_playlist.xml" + line="67" + column="4"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`start`" instead of "`left`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="left|center_vertical"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/video_details.xml" + line="19" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="4dip"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="4dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/video_details.xml" + line="22" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="2dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="2dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/video_details.xml" + line="23" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Use "`end`" instead of "`right`" to ensure correct behavior in right-to-left locales" + errorLine1=" a:layout_gravity="right|center_vertical"" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/video_details.xml" + line="31" + column="31"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="2dip"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="2dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/video_details.xml" + line="32" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="6dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="6dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/video_details.xml" + line="33" + column="13"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingStart="1dip"` to better support right-to-left layouts" + errorLine1=" a:paddingLeft="1dip"" + errorLine2=" ~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/video_list_item.xml" + line="13" + column="9"/> + </issue> + + <issue + id="RtlHardcoded" + message="Consider adding `a:paddingEnd="3dip"` to better support right-to-left layouts" + errorLine1=" a:paddingRight="3dip"" + errorLine2=" ~~~~~~~~~~~~~~"> + <location + file="src/main/res/layout/video_list_item.xml" + line="26" + column="9"/> + </issue> + + <issue + id="RtlEnabled" + message="The project references RTL attributes, but does not explicitly enable or disable RTL support with `android:supportsRtl` in the manifest"> + <location + file="src/main/AndroidManifest.xml"/> + </issue> + +</issues> diff --git a/ultrasonic/lint.xml b/ultrasonic/lint.xml deleted file mode 100644 index 8423c0ef..00000000 --- a/ultrasonic/lint.xml +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<lint> -</lint> \ No newline at end of file