From 329a51f8860a5b791df998d110a7bbc6a06707e0 Mon Sep 17 00:00:00 2001 From: advplyr Date: Fri, 15 Jul 2022 19:48:36 -0500 Subject: [PATCH] Example of adding custom action icon for android auto --- .../app/player/MediaSessionCallback.kt | 10 ++++++++++ .../app/player/PlayerNotificationService.kt | 16 +++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/MediaSessionCallback.kt b/android/app/src/main/java/com/audiobookshelf/app/player/MediaSessionCallback.kt index 4dd5410a..d23f7451 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/MediaSessionCallback.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/MediaSessionCallback.kt @@ -7,8 +7,10 @@ import android.os.Handler import android.os.Looper import android.os.Message import android.support.v4.media.session.MediaSessionCompat +import android.support.v4.media.session.PlaybackStateCompat import android.util.Log import android.view.KeyEvent +import com.audiobookshelf.app.R import com.audiobookshelf.app.data.LibraryItemWrapper import com.audiobookshelf.app.data.PodcastEpisode import java.util.* @@ -217,4 +219,12 @@ class MediaSessionCallback(var playerNotificationService:PlayerNotificationServi } } + // Example Using a custom action in android auto +// override fun onCustomAction(action: String?, extras: Bundle?) { +// super.onCustomAction(action, extras) +// +// if ("com.audiobookshelf.app.PLAYBACK_RATE" == action) { +// +// } +// } } diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt index 9c601bf4..43c637f7 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt @@ -16,9 +16,11 @@ import android.util.Log import androidx.annotation.RequiresApi import androidx.core.app.NotificationCompat import androidx.core.content.ContextCompat +import androidx.core.content.res.ResourcesCompat import androidx.media.MediaBrowserServiceCompat import androidx.media.utils.MediaConstants import com.audiobookshelf.app.BuildConfig +import com.audiobookshelf.app.R import com.audiobookshelf.app.data.* import com.audiobookshelf.app.data.DeviceInfo import com.audiobookshelf.app.device.DeviceManager @@ -66,7 +68,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { private lateinit var ctx:Context private lateinit var mediaSessionConnector: MediaSessionConnector private lateinit var playerNotificationManager: PlayerNotificationManager - private lateinit var mediaSession: MediaSessionCompat + lateinit var mediaSession: MediaSessionCompat private lateinit var transportControls:MediaControllerCompat.TransportControls lateinit var mediaManager: MediaManager @@ -262,6 +264,18 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { mediaSessionConnector.setQueueNavigator(queueNavigator) mediaSessionConnector.setPlaybackPreparer(MediaSessionPlaybackPreparer(this)) + // Example adding custom action with icon in android auto +// mediaSessionConnector.setCustomActionProviders(object : MediaSessionConnector.CustomActionProvider { +// override fun onCustomAction(player: Player, action: String, extras: Bundle?) { +// } +// override fun getCustomAction(player: Player): PlaybackStateCompat.CustomAction? { +// var icon = R.drawable.exo_icon_rewind +// return PlaybackStateCompat.CustomAction.Builder( +// "com.audiobookshelf.app.PLAYBACK_RATE", "Playback Rate", icon) +// .build() +// } +// }) + mediaSession.setCallback(MediaSessionCallback(this)) initializeMPlayer()