Browse Source

Merge pull request #4099 from tick-guo/master

fix #4090 android 14 can not show play control in lock screen
Horis 2 years ago
parent
commit
de2b0cba6d
1 changed files with 20 additions and 4 deletions
  1. 20 4
      app/src/main/java/io/legado/app/service/BaseReadAloudService.kt

+ 20 - 4
app/src/main/java/io/legado/app/service/BaseReadAloudService.kt

@@ -14,6 +14,7 @@ import android.os.Bundle
 import android.os.PowerManager
 import android.support.v4.media.session.MediaSessionCompat
 import android.support.v4.media.session.PlaybackStateCompat
+import android.util.Log
 import androidx.annotation.CallSuper
 import androidx.core.app.NotificationCompat
 import androidx.lifecycle.lifecycleScope
@@ -482,6 +483,24 @@ abstract class BaseReadAloudService : BaseService(),
         }
     }
 
+    val isVivoDevice: Boolean by lazy {
+        android.os.Build.MANUFACTURER.equals(
+            "vivo",
+            ignoreCase = true
+        )
+    }
+
+    private fun ChoiceMediaStyle(): androidx.media.app.NotificationCompat.MediaStyle {
+        //Log.d(TAG, "isVivoDevice=$isVivoDevice")
+        val type = androidx.media.app.NotificationCompat.MediaStyle()
+            .setShowActionsInCompactView(0, 1, 2)
+        if (isVivoDevice) {
+            //fix #4090 android 14 can not show play control in lock screen
+            type.setMediaSession(mediaSessionCompat.sessionToken)
+        }
+        return type
+    }
+
     private fun createNotification(): NotificationCompat.Builder {
         var nTitle: String = when {
             pause -> getString(R.string.read_aloud_pause)
@@ -537,10 +556,7 @@ abstract class BaseReadAloudService : BaseService(),
             getString(R.string.set_timer),
             aloudServicePendingIntent(IntentAction.addTimer)
         )
-        builder.setStyle(
-            androidx.media.app.NotificationCompat.MediaStyle()
-                .setShowActionsInCompactView(0, 1, 2)
-        )
+        builder.setStyle(ChoiceMediaStyle())
         return builder
     }