[Android] Fix notification actions for Android 13
Nicolas Pomepuy
git at videolan.org
Fri Sep 30 09:23:43 UTC 2022
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Thu Sep 29 07:21:33 2022 +0200| [d20f343a250442bc415133734cee07d676abc2f5] | committer: Duncan McNamara
Fix notification actions for Android 13
> https://code.videolan.org/videolan/vlc-android/commit/d20f343a250442bc415133734cee07d676abc2f5
---
.../src/org/videolan/vlc/PlaybackService.kt | 59 ++++++++++++++--------
1 file changed, 38 insertions(+), 21 deletions(-)
diff --git a/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt b/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
index 69abc67a0..f909e141e 100644
--- a/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
+++ b/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
@@ -1086,29 +1086,23 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner, CoroutineSc
actions = actions or PlaybackStateCompat.ACTION_SKIP_TO_NEXT
if (repeatType != PlaybackStateCompat.REPEAT_MODE_NONE || hasPrevious() || (isSeekable && !podcastMode))
actions = actions or PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS
- if (podcastMode) {
- addCustomSeekActions(pscb)
- addCustomSpeedActions(pscb)
- pscb.addCustomAction(CUSTOM_ACTION_BOOKMARK, getString(R.string.add_bookmark), R.drawable.ic_bookmark_add)
- } else {
- if (playlistManager.canRepeat())
- actions = actions or PlaybackStateCompat.ACTION_SET_REPEAT_MODE
- if (playlistManager.canShuffle())
- actions = actions or PlaybackStateCompat.ACTION_SET_SHUFFLE_MODE
- /* Always add the icons, regardless of the allowed actions */
- val shuffleResId = when {
- isShuffling -> R.drawable.ic_auto_shuffle_enabled
- else -> R.drawable.ic_auto_shuffle_disabled
+
+ when {
+ podcastMode -> {
+ addCustomSeekActions(pscb)
+ addCustomSpeedActions(pscb)
+ pscb.addCustomAction(CUSTOM_ACTION_BOOKMARK, getString(R.string.add_bookmark), R.drawable.ic_bookmark_add)
}
- pscb.addCustomAction(CUSTOM_ACTION_SHUFFLE, getString(R.string.shuffle_title), shuffleResId)
- val repeatResId = when (repeatType) {
- PlaybackStateCompat.REPEAT_MODE_ALL -> R.drawable.ic_auto_repeat_pressed
- PlaybackStateCompat.REPEAT_MODE_ONE -> R.drawable.ic_auto_repeat_one_pressed
- else -> R.drawable.ic_auto_repeat_normal
+ Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU -> {
+ if (!isCarMode()) {
+ addCustomSeekActions(pscb)
+ } else {
+ actions = manageAutoActions(actions, pscb, repeatType)
+ }
+ }
+ else -> {
+ actions = manageAutoActions(actions, pscb, repeatType)
}
- pscb.addCustomAction(CUSTOM_ACTION_REPEAT, getString(R.string.repeat_title), repeatResId)
- addCustomSpeedActions(pscb, settings.getBoolean("enable_android_auto_speed_buttons", false))
- addCustomSeekActions(pscb, settings.getBoolean("enable_android_auto_seek_buttons", false))
}
actions = actions or PlaybackStateCompat.ACTION_FAST_FORWARD or PlaybackStateCompat.ACTION_REWIND or PlaybackStateCompat.ACTION_SEEK_TO
pscb.setActions(actions)
@@ -1133,6 +1127,29 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner, CoroutineSc
}
}
+ private fun manageAutoActions(actions: Long, pscb: PlaybackStateCompat.Builder, repeatType: Int): Long {
+ var resultActions = actions
+ if (playlistManager.canRepeat())
+ resultActions = resultActions or PlaybackStateCompat.ACTION_SET_REPEAT_MODE
+ if (playlistManager.canShuffle())
+ resultActions = resultActions or PlaybackStateCompat.ACTION_SET_SHUFFLE_MODE
+ /* Always add the icons, regardless of the allowed actions */
+ val shuffleResId = when {
+ isShuffling -> R.drawable.ic_auto_shuffle_enabled
+ else -> R.drawable.ic_auto_shuffle_disabled
+ }
+ pscb.addCustomAction(CUSTOM_ACTION_SHUFFLE, getString(R.string.shuffle_title), shuffleResId)
+ val repeatResId = when (repeatType) {
+ PlaybackStateCompat.REPEAT_MODE_ALL -> R.drawable.ic_auto_repeat_pressed
+ PlaybackStateCompat.REPEAT_MODE_ONE -> R.drawable.ic_auto_repeat_one_pressed
+ else -> R.drawable.ic_auto_repeat_normal
+ }
+ pscb.addCustomAction(CUSTOM_ACTION_REPEAT, getString(R.string.repeat_title), repeatResId)
+ addCustomSpeedActions(pscb, settings.getBoolean("enable_android_auto_speed_buttons", false))
+ addCustomSeekActions(pscb, settings.getBoolean("enable_android_auto_seek_buttons", false))
+ return resultActions
+ }
+
private fun addCustomSeekActions(pscb: PlaybackStateCompat.Builder, showSeekActions: Boolean = true) {
if (!showSeekActions) return
val ctx = applicationContext
More information about the Android
mailing list