Przeglądaj źródła

使用媒体通知

HapeLee 1 rok temu
rodzic
commit
df34329149

+ 17 - 23
app/src/main/java/io/legato/kazusa/service/AudioPlayService.kt

@@ -551,32 +551,30 @@ class AudioPlayService : BaseService(),
     }
 
     private fun createNotification(): NotificationCompat.Builder {
-        var nTitle: String = when {
+        val nTitle: String = when {
             pause -> getString(R.string.audio_pause)
-            timeMinute in 1..60 -> getString(
-                R.string.playing_timer,
-                timeMinute
-            )
-
+            timeMinute in 1..60 -> getString(R.string.playing_timer, timeMinute)
             else -> getString(R.string.audio_play_t)
-        }
-        nTitle += ": ${AudioPlay.book?.name}"
-        var nSubtitle = AudioPlay.durChapter?.title
-        if (nSubtitle.isNullOrEmpty()) {
-            nSubtitle = getString(R.string.audio_play_s)
-        }
-        val builder = NotificationCompat
-            .Builder(this@AudioPlayService, AppConst.channelIdReadAloud)
+        } + ": ${AudioPlay.book?.name}"
+
+        val nSubtitle = AudioPlay.durChapter?.title ?: getString(R.string.audio_play_s)
+
+        val builder = NotificationCompat.Builder(this@AudioPlayService, AppConst.channelIdReadAloud)
             .setSmallIcon(R.drawable.ic_volume_up)
             .setSubText(getString(R.string.audio))
             .setOngoing(true)
             .setOnlyAlertOnce(true)
             .setContentTitle(nTitle)
             .setContentText(nSubtitle)
-            .setContentIntent(
-                activityPendingIntent<AudioPlayActivity>("activity")
+            .setContentIntent(activityPendingIntent<AudioPlayActivity>("activity"))
+            .setLargeIcon(cover)
+            .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
+            .setStyle(
+                androidx.media.app.NotificationCompat.MediaStyle()
+                    .setShowActionsInCompactView(0, 1, 2)
+                    .setMediaSession(mediaSessionCompat?.sessionToken)
             )
-        builder.setLargeIcon(cover)
+
         if (pause) {
             builder.addAction(
                 R.drawable.ic_play,
@@ -590,6 +588,7 @@ class AudioPlayService : BaseService(),
                 servicePendingIntent<AudioPlayService>(IntentAction.pause)
             )
         }
+
         builder.addAction(
             R.drawable.ic_stop_black_24dp,
             getString(R.string.stop),
@@ -600,12 +599,7 @@ class AudioPlayService : BaseService(),
             getString(R.string.set_timer),
             servicePendingIntent<AudioPlayService>(IntentAction.addTimer)
         )
-        builder.setStyle(
-            androidx.media.app.NotificationCompat.MediaStyle()
-                .setShowActionsInCompactView(0, 1, 2)
-                .setMediaSession(mediaSessionCompat?.sessionToken)
-        )
-        builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
+
         return builder
     }
 

+ 2 - 2
app/src/main/res/values-zh/strings.xml

@@ -1241,8 +1241,8 @@
     <string name="firebase_enable_summary">允许应用使用Google Firebase进行崩溃和性能统计</string>
     <string name="locate_current">定位至当前</string>
     <string name="padding_display_cutouts">填充刘海区域</string>
-    <string name="system_media_control_compatibility_change">系统媒体控件兼容性更改</string>
-    <string name="system_media_control_compatibility_change_summary">当锁屏不显示系统媒体控件时可以尝试开启,比如 OneUI 7.0或 OriginOS 等</string>
+    <string name="system_media_control_compatibility_change">使用媒体通道</string>
+    <string name="system_media_control_compatibility_change_summary">使用OEM厂商提供的媒体通道,可能解决一些通知无法显示的问题</string>
     <string name="read_aloud_pause_resume">朗读暂停/继续</string>
     <string name="play_mode">播放模式</string>
     <string name="tabletInterface">平板界面</string>