From d4d40c97ad84fc90e77707797c4bb2dc8f87e84f Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Sat, 19 Dec 2020 15:43:07 -0700 Subject: [PATCH] Fix compat issues Fix some issues on older versions. --- README.md | 7 ++++--- app/src/main/AndroidManifest.xml | 4 ++-- .../oxycblt/auxio/library/LibraryFragment.kt | 1 + .../org/oxycblt/auxio/music/coil/CoilUtils.kt | 17 ++++++++--------- .../oxycblt/auxio/playback/NotificationUtils.kt | 6 +++--- .../oxycblt/auxio/playback/PlaybackService.kt | 2 +- .../oxycblt/auxio/recycler/NoLeakThumbView.kt | 7 +------ .../org/oxycblt/auxio/songs/SongsFragment.kt | 9 +++++++++ app/src/main/res/drawable/ic_clear.xml | 10 +++++----- app/src/main/res/values-v21/dimens.xml | 5 +++++ app/src/main/res/values-v23/dimens.xml | 4 ++++ app/src/main/res/xml/backup_descriptor.xml | 2 ++ gradle/wrapper/gradle-wrapper.properties | 4 ++-- info/ADDITIONS.md | 2 +- 14 files changed, 48 insertions(+), 32 deletions(-) create mode 100644 app/src/main/res/values-v21/dimens.xml create mode 100644 app/src/main/res/values-v23/dimens.xml create mode 100644 app/src/main/res/xml/backup_descriptor.xml diff --git a/README.md b/README.md index 7a55a93d5..38ef356b9 100644 --- a/README.md +++ b/README.md @@ -38,16 +38,17 @@ Its meant to be consistent and reliable, while still being customizable and exte - Reliable, [ExoPlayer](https://exoplayer.dev/) based playback - Customizable UI & Behavior -- Extensive Genres/Artists/Albums/Songs support -- Powerful queue system +- Genres/Artists/Albums/Songs support +- Extensive queue system - Full playback persistence system +- Edge-to-edge (Oreo+ Only) - Embedded covers support - Search Functionality - Audio Focus / Headset Management - No internet connectivity whatsoever - Kotlin from the ground-up - Modular, feature-based architecture -- No rounded corners (The way god intended) +- No rounded corners ## To Come in the future: diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4dcb7ac91..83315b942 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,14 +9,14 @@ - + android:fullBackupContent="@xml/backup_descriptor"> Unit) { - Coil.enqueue( - ImageRequest.Builder(context) - .data(song.album.coverUri) - .error(R.drawable.ic_song) - .target { onDone(it.toBitmap()) } - .build() - ) +fun getBitmap(context: Context, song: Song, onDone: (Bitmap?) -> Unit) { + val request = ImageRequest.Builder(context) + .data(song.album.coverUri) + .target(onError = { onDone(null) }, onSuccess = { onDone(it.toBitmap()) }) + .build() + + Coil.imageLoader(context).enqueue(request) } // --- BINDING ADAPTERS --- diff --git a/app/src/main/java/org/oxycblt/auxio/playback/NotificationUtils.kt b/app/src/main/java/org/oxycblt/auxio/playback/NotificationUtils.kt index 2fe1a37a7..9f4c5687c 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/NotificationUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/NotificationUtils.kt @@ -97,9 +97,9 @@ fun NotificationCompat.Builder.setMetadata( song.album.artist.name, ) - // On older versions of android [API <26], show the song's album on the subtext instead of + // On older versions of android [API <24], show the song's album on the subtext instead of // the current mode, as that makes more sense for the old style of media notifications. - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { setSubText(song.album.name) } @@ -145,7 +145,7 @@ fun NotificationCompat.Builder.updateExtraAction(context: Context, useAltAction: * @param context The context required to get the strings required to show certain modes */ fun NotificationCompat.Builder.updateMode(context: Context) { - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { val playbackManager = PlaybackStateManager.getInstance() // If playing from all songs, set the subtext as that, otherwise the currently played parent. diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackService.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackService.kt index b73452d50..b8199b146 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackService.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackService.kt @@ -237,7 +237,7 @@ class PlaybackService : Service(), Player.EventListener, PlaybackStateManager.Ca uploadMetadataToSession(it) - notification.setMetadata(this, playbackManager.song!!, settingsManager.colorizeNotif) { + notification.setMetadata(this, it, settingsManager.colorizeNotif) { startForegroundOrNotify("Song") } diff --git a/app/src/main/java/org/oxycblt/auxio/recycler/NoLeakThumbView.kt b/app/src/main/java/org/oxycblt/auxio/recycler/NoLeakThumbView.kt index 116338b7e..d20e4a0c3 100644 --- a/app/src/main/java/org/oxycblt/auxio/recycler/NoLeakThumbView.kt +++ b/app/src/main/java/org/oxycblt/auxio/recycler/NoLeakThumbView.kt @@ -152,12 +152,7 @@ class NoLeakThumbView @JvmOverloads constructor( ) { val thumbTargetY = indicatorCenterY.toFloat() - (thumbView.measuredHeight / 2) - // Don't animate if the view is invisible. - if (!isActivated || !isVisible) { - y = thumbTargetY - } else { - thumbAnimation.animateToFinalPosition(thumbTargetY) - } + thumbAnimation.animateToFinalPosition(thumbTargetY) when (indicator) { is FastScrollItemIndicator.Text -> { diff --git a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt index 2bff2cf39..4d87b627f 100644 --- a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt @@ -1,5 +1,7 @@ package org.oxycblt.auxio.songs +import android.content.res.ColorStateList +import android.os.Build import android.os.Bundle import android.util.TypedValue import android.view.LayoutInflater @@ -18,8 +20,10 @@ import org.oxycblt.auxio.logD import org.oxycblt.auxio.music.MusicStore import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.settings.SettingsManager +import org.oxycblt.auxio.ui.accent import org.oxycblt.auxio.ui.isLandscape import org.oxycblt.auxio.ui.setupSongActions +import org.oxycblt.auxio.ui.toColor import kotlin.math.ceil /** @@ -105,6 +109,11 @@ class SongsFragment : Fragment() { binding.songFastScroll.apply { var concatInterval = -1 + // API 22 and below don't support the state color, so just use the accent. + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { + textColor = ColorStateList.valueOf(accent.first.toColor(requireContext())) + } + setupWithRecyclerView( binding.songRecycler, { pos -> diff --git a/app/src/main/res/drawable/ic_clear.xml b/app/src/main/res/drawable/ic_clear.xml index cafc20c45..fdb48d2cf 100644 --- a/app/src/main/res/drawable/ic_clear.xml +++ b/app/src/main/res/drawable/ic_clear.xml @@ -2,10 +2,10 @@ - + android:viewportHeight="24" + android:tint="?attr/colorPrimary"> + \ No newline at end of file diff --git a/app/src/main/res/values-v21/dimens.xml b/app/src/main/res/values-v21/dimens.xml new file mode 100644 index 000000000..2219146b3 --- /dev/null +++ b/app/src/main/res/values-v21/dimens.xml @@ -0,0 +1,5 @@ + + + + 6dp + \ No newline at end of file diff --git a/app/src/main/res/values-v23/dimens.xml b/app/src/main/res/values-v23/dimens.xml new file mode 100644 index 000000000..5c624e676 --- /dev/null +++ b/app/src/main/res/values-v23/dimens.xml @@ -0,0 +1,4 @@ + + + 2dp + \ No newline at end of file diff --git a/app/src/main/res/xml/backup_descriptor.xml b/app/src/main/res/xml/backup_descriptor.xml new file mode 100644 index 000000000..9147603ae --- /dev/null +++ b/app/src/main/res/xml/backup_descriptor.xml @@ -0,0 +1,2 @@ + + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d31e46712..57f487167 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Oct 12 13:43:13 MDT 2020 +#Sat Dec 19 15:35:00 MST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip diff --git a/info/ADDITIONS.md b/info/ADDITIONS.md index bc182cafa..47cc6de51 100644 --- a/info/ADDITIONS.md +++ b/info/ADDITIONS.md @@ -8,7 +8,7 @@ All guidelines from the [Contribution Guidelines](../.github/CONTRIBUTING.md) st ## Bug Fixes, Optimizations, Library Updates, Formatting, etc. -These will likely be accepted/add as long as they do not cause too much harm to the app's architecture or UX. +These will likely be accepted/added as long as they do not cause too much harm to the app's architecture or UX. ## New Options/Customizations