From bc6ef964655dd279037198a0728ff3a11ea0a63c Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 21 Feb 2023 22:20:49 -0600 Subject: [PATCH] Android Home Screen Widget --- android/app/src/main/AndroidManifest.xml | 22 ++-- .../audiobookshelf/app/MediaPlayerWidget.kt | 108 ++++++++++++++++++ .../com/audiobookshelf/app/NewAppWidget.kt | 96 ---------------- .../app/player/MediaSessionCallback.kt | 10 ++ .../app/player/PlayerNotificationService.kt | 2 +- .../media_player_widget_preview.png | Bin 0 -> 52320 bytes .../src/main/res/drawable/icon_monochrome.xml | 9 ++ .../main/res/layout/media_player_widget.xml | 102 +++++++++++++++++ .../src/main/res/layout/new_app_widget.xml | 26 ----- .../src/main/res/values-night-v31/themes.xml | 10 ++ .../app/src/main/res/values-v31/styles.xml | 16 +++ .../app/src/main/res/values-v31/themes.xml | 11 ++ android/app/src/main/res/values/attrs.xml | 14 ++- android/app/src/main/res/values/styles.xml | 59 ++++++---- android/app/src/main/res/values/themes.xml | 27 +++-- .../main/res/xml/media_player_widget_info.xml | 14 +++ .../src/main/res/xml/new_app_widget_info.xml | 12 -- 17 files changed, 350 insertions(+), 188 deletions(-) create mode 100644 android/app/src/main/java/com/audiobookshelf/app/MediaPlayerWidget.kt delete mode 100644 android/app/src/main/java/com/audiobookshelf/app/NewAppWidget.kt create mode 100644 android/app/src/main/res/drawable-nodpi/media_player_widget_preview.png create mode 100644 android/app/src/main/res/drawable/icon_monochrome.xml create mode 100644 android/app/src/main/res/layout/media_player_widget.xml delete mode 100644 android/app/src/main/res/layout/new_app_widget.xml create mode 100644 android/app/src/main/res/values-night-v31/themes.xml create mode 100644 android/app/src/main/res/values-v31/styles.xml create mode 100644 android/app/src/main/res/values-v31/themes.xml create mode 100644 android/app/src/main/res/xml/media_player_widget_info.xml delete mode 100644 android/app/src/main/res/xml/new_app_widget_info.xml diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 5e4a8f29..44833801 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -23,18 +23,18 @@ android:theme="@style/AppTheme" android:usesCleartextTraffic="true" > - - - - - - - + + + + + - - - - + + ?) { + super.onResourceReady(resource, transition) + } + } + + val artist = playbackSession?.displayAuthor ?: "Unknown" + views.setTextViewText(R.id.widgetArtistText, artist) + + val title = playbackSession?.displayTitle ?: "Unknown" + views.setTextViewText(R.id.widgetMediaTitle, title) + + val options = RequestOptions().override(300, 300).placeholder(R.drawable.icon).error(R.drawable.icon) + Glide.with(context.applicationContext).asBitmap().load(imageUri).apply(options).into(awt) + + Log.e(tag, "Update App Widget | Is Playing? $isPlaying") + val playPauseResource = if (isPlaying) R.drawable.ic_media_pause_dark else R.drawable.ic_media_play_dark + views.setImageViewResource(R.id.widgetPlayPauseButton, playPauseResource) + + // Instruct the widget manager to update the widget + appWidgetManager.updateAppWidget(appWidgetId, views) +} diff --git a/android/app/src/main/java/com/audiobookshelf/app/NewAppWidget.kt b/android/app/src/main/java/com/audiobookshelf/app/NewAppWidget.kt deleted file mode 100644 index c160ca06..00000000 --- a/android/app/src/main/java/com/audiobookshelf/app/NewAppWidget.kt +++ /dev/null @@ -1,96 +0,0 @@ -package com.audiobookshelf.app - -import android.app.PendingIntent -import android.appwidget.AppWidgetManager -import android.appwidget.AppWidgetProvider -import android.content.ComponentName -import android.content.Context -import android.content.Intent -import android.graphics.Bitmap -import android.net.Uri -import android.support.v4.media.session.PlaybackStateCompat.ACTION_PLAY_PAUSE -import android.util.Log -import android.widget.RemoteViews -import androidx.media.session.MediaButtonReceiver.buildMediaButtonPendingIntent -import com.audiobookshelf.app.device.DeviceManager -import com.audiobookshelf.app.device.WidgetEventEmitter -import com.audiobookshelf.app.player.PlayerNotificationService -import com.bumptech.glide.Glide -import com.bumptech.glide.request.RequestOptions -import com.bumptech.glide.request.target.AppWidgetTarget -import com.bumptech.glide.request.transition.Transition - -/** - * Implementation of App Widget functionality. - */ -class NewAppWidget : AppWidgetProvider() { - val tag = "NewAppWidget" - - override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) { - // There may be multiple widgets active, so update all of them - for (appWidgetId in appWidgetIds) { - updateAppWidget(context, appWidgetManager, appWidgetId, null,false) - } - } - - override fun onEnabled(context: Context) { - Log.w(tag, "onEnabled check context ${context.packageName}") - - // Enter relevant functionality for when the first widget is created - DeviceManager.widgetUpdater = (object : WidgetEventEmitter { - override fun onPlayerChanged(pns:PlayerNotificationService) { - val isPlaying = pns.currentPlayer.isPlaying - Log.i(tag, "onPlayerChanged | Is Playing? $isPlaying") - - val appWidgetManager = AppWidgetManager.getInstance(context) - val componentName = ComponentName(context, NewAppWidget::class.java) - val ids = appWidgetManager.getAppWidgetIds(componentName) - - val playbackSession = pns.getCurrentPlaybackSessionCopy() - val cover = playbackSession?.getCoverUri() - - for (widgetId in ids) { - updateAppWidget(context, appWidgetManager, widgetId, cover, isPlaying) - } - } - }) - } - - override fun onDisabled(context: Context) { - // Enter relevant functionality for when the last widget is disabled - } -} - -internal fun updateAppWidget(context: Context, appWidgetManager: AppWidgetManager, appWidgetId: Int, coverUri:Uri?, isPlaying:Boolean) { - - val views = RemoteViews(context.packageName, R.layout.new_app_widget) - - val playPausePI = buildMediaButtonPendingIntent(context, ACTION_PLAY_PAUSE) - views.setOnClickPendingIntent(R.id.playPauseIcon, playPausePI) - - val wholeWidgetClickI = Intent(context, MainActivity::class.java) - wholeWidgetClickI.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK - val wholeWidgetClickPI = PendingIntent.getActivity( - context, - System.currentTimeMillis().toInt(), - wholeWidgetClickI, - PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE - ) - views.setOnClickPendingIntent(R.id.appWidget, wholeWidgetClickPI) - - val imageUri = coverUri ?: Uri.parse("android.resource://com.audiobookshelf.app/" + R.drawable.icon) - val awt: AppWidgetTarget = object : AppWidgetTarget(context.applicationContext, R.id.imageView, views, appWidgetId) { - override fun onResourceReady(resource: Bitmap, transition: Transition?) { - super.onResourceReady(resource, transition) - } - } - - val options = RequestOptions().override(300, 300).placeholder(R.drawable.icon).error(R.drawable.icon) - Glide.with(context.applicationContext).asBitmap().load(imageUri).apply(options).into(awt) - - val playPauseResource = if (isPlaying) R.drawable.ic_media_pause_dark else R.drawable.ic_media_play_dark - views.setImageViewResource(R.id.playPauseIcon, playPauseResource) - - // Instruct the widget manager to update the widget - appWidgetManager.updateAppWidget(appWidgetId, views) -} 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 222bd5f6..036856d2 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 @@ -190,6 +190,16 @@ class MediaSessionCallback(var playerNotificationService:PlayerNotificationServi handleMediaButtonClickCount() } } + KeyEvent.KEYCODE_MEDIA_FAST_FORWARD -> { + Log.d(tag, "handleCallMediaButton: Media Fast Forward") + if (0 == mediaButtonClickCount) playerNotificationService.jumpForward() + handleMediaButtonClickCount() + } + KeyEvent.KEYCODE_MEDIA_REWIND -> { + Log.d(tag, "handleCallMediaButton: Media Rewind") + if (0 == mediaButtonClickCount) playerNotificationService.jumpBackward() + handleMediaButtonClickCount() + } } } 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 71f12af6..564edb1a 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 @@ -258,7 +258,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { playerNotificationManager.setPriority(NotificationCompat.PRIORITY_MAX) playerNotificationManager.setUseFastForwardActionInCompactView(true) playerNotificationManager.setUseRewindActionInCompactView(true) - playerNotificationManager.setSmallIcon(R.drawable.exo_icon_localaudio) + playerNotificationManager.setSmallIcon(R.drawable.icon_monochrome) // Unknown action playerNotificationManager.setBadgeIconType(NotificationCompat.BADGE_ICON_LARGE) diff --git a/android/app/src/main/res/drawable-nodpi/media_player_widget_preview.png b/android/app/src/main/res/drawable-nodpi/media_player_widget_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..f286b61f416488cb9fba398d12ecc3254a423664 GIT binary patch literal 52320 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�`qi#Y^B5K(PU+u?27`k(jX)Vu( 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable/icon_monochrome.xml b/android/app/src/main/res/drawable/icon_monochrome.xml new file mode 100644 index 00000000..594c52c7 --- /dev/null +++ b/android/app/src/main/res/drawable/icon_monochrome.xml @@ -0,0 +1,9 @@ + + + diff --git a/android/app/src/main/res/layout/media_player_widget.xml b/android/app/src/main/res/layout/media_player_widget.xml new file mode 100644 index 00000000..8603a29b --- /dev/null +++ b/android/app/src/main/res/layout/media_player_widget.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/res/layout/new_app_widget.xml b/android/app/src/main/res/layout/new_app_widget.xml deleted file mode 100644 index 99ac1b46..00000000 --- a/android/app/src/main/res/layout/new_app_widget.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - diff --git a/android/app/src/main/res/values-night-v31/themes.xml b/android/app/src/main/res/values-night-v31/themes.xml new file mode 100644 index 00000000..db9d77f0 --- /dev/null +++ b/android/app/src/main/res/values-night-v31/themes.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/android/app/src/main/res/values-v31/styles.xml b/android/app/src/main/res/values-v31/styles.xml new file mode 100644 index 00000000..3a0135c0 --- /dev/null +++ b/android/app/src/main/res/values-v31/styles.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/android/app/src/main/res/values-v31/themes.xml b/android/app/src/main/res/values-v31/themes.xml new file mode 100644 index 00000000..8ffe2e9f --- /dev/null +++ b/android/app/src/main/res/values-v31/themes.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/android/app/src/main/res/values/attrs.xml b/android/app/src/main/res/values/attrs.xml index 7781ac86..3f37ec30 100644 --- a/android/app/src/main/res/values/attrs.xml +++ b/android/app/src/main/res/values/attrs.xml @@ -1,7 +1,9 @@ - - - - - - \ No newline at end of file + + + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index 713e8445..862b1660 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -1,33 +1,42 @@ - - + + - + - - + - + + + + + diff --git a/android/app/src/main/res/values/themes.xml b/android/app/src/main/res/values/themes.xml index 254f4a55..25c0e184 100644 --- a/android/app/src/main/res/values/themes.xml +++ b/android/app/src/main/res/values/themes.xml @@ -1,17 +1,22 @@ - + 8dp + - + + + diff --git a/android/app/src/main/res/xml/media_player_widget_info.xml b/android/app/src/main/res/xml/media_player_widget_info.xml new file mode 100644 index 00000000..e1e9d251 --- /dev/null +++ b/android/app/src/main/res/xml/media_player_widget_info.xml @@ -0,0 +1,14 @@ + + diff --git a/android/app/src/main/res/xml/new_app_widget_info.xml b/android/app/src/main/res/xml/new_app_widget_info.xml deleted file mode 100644 index ffa76ee7..00000000 --- a/android/app/src/main/res/xml/new_app_widget_info.xml +++ /dev/null @@ -1,12 +0,0 @@ - -