From 22057939db94bc4b8d3fe21836b694496556f6ea Mon Sep 17 00:00:00 2001 From: tick <895866818@qq.com> Date: Sat, 17 Aug 2024 17:24:01 +0800 Subject: [PATCH] fix #4090 just do fix flow in vivo --- .../app/service/BaseReadAloudService.kt | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt b/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt index ff3279b34..1684cc97b 100644 --- a/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt +++ b/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,12 +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) - //fix #4090 android 14 can not show play control in lock screen - .setMediaSession(mediaSessionCompat.sessionToken) - ) + builder.setStyle(ChoiceMediaStyle()) return builder }