From 5773e31990c182a91b9cca5fd5bd971ccffce5f5 Mon Sep 17 00:00:00 2001 From: Huang Xin Date: Thu, 16 Oct 2025 16:10:04 +0800 Subject: [PATCH] compat(tts): fix crash with TTS on some versions of Android systems (#2244) --- .../src/main/java/MediaPlaybackService.kt | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-native-tts/android/src/main/java/MediaPlaybackService.kt b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-tts/android/src/main/java/MediaPlaybackService.kt index 45e6e1f4..a27af7cb 100644 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-native-tts/android/src/main/java/MediaPlaybackService.kt +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-tts/android/src/main/java/MediaPlaybackService.kt @@ -161,10 +161,47 @@ class MediaPlaybackService : MediaBrowserServiceCompat() { setVisibility(NotificationCompat.VISIBILITY_PUBLIC) setSmallIcon(R.drawable.notification_icon) + addAction( + android.R.drawable.ic_media_previous, + "Previous", + MediaButtonReceiver.buildMediaButtonPendingIntent( + this@MediaPlaybackService, + PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS + ) + ) + if (playbackState == PlaybackStateCompat.STATE_PLAYING) { + addAction( + android.R.drawable.ic_media_pause, + "Pause", + MediaButtonReceiver.buildMediaButtonPendingIntent( + this@MediaPlaybackService, + PlaybackStateCompat.ACTION_PAUSE + ) + ) + } else { + addAction( + android.R.drawable.ic_media_play, + "Play", + MediaButtonReceiver.buildMediaButtonPendingIntent( + this@MediaPlaybackService, + PlaybackStateCompat.ACTION_PLAY + ) + ) + } + + addAction( + android.R.drawable.ic_media_next, + "Next", + MediaButtonReceiver.buildMediaButtonPendingIntent( + this@MediaPlaybackService, + PlaybackStateCompat.ACTION_SKIP_TO_NEXT + ) + ) + setStyle( androidx.media.app.NotificationCompat.MediaStyle() .setMediaSession(mediaSession?.sessionToken) - .setShowActionsInCompactView(0) + .setShowActionsInCompactView(0, 1, 2) ) } return builder.build()