gpt4 book ai didi

Android 通知 MediaStyle 忽略正在进行的标志

转载 作者:行者123 更新时间:2023-12-04 23:47:54 27 4
gpt4 key购买 nike

我正在尝试在音频 Android 应用程序中使用 MediaStyle 通知,如 audio app documentation 中所述。以及 media style documentation .我能够成功地显示带有功能传输控件的通知,所以我相信我的实现是合理的。但是,当我设置 androidx.media.app.NotificationCompat.MediaStyle通过 .setStyle()NotificationCompat.Builder按照建议,它似乎忽略了 .setOngoing() 的任何使用。旗帜。 setOngoing根据源代码确保“通知不能被驳回”。我在未设置媒体样式时遇到了所描述的行为,但在我使用 .setStyle() 时却没有。 .
我想知道是否有人知道解决方法,或者是否有一些未记录的要求我需要安抚使用 .setOngoing()带有媒体风格的通知。我的编译 SDK 版本、目标 SDK 版本和最小 SDK 版本都是 30。请让我知道是否有任何其他代码有用;我相信我正在提供相关的内容。
为了说明这种困境,我提供了屏幕截图,显示了在应用媒体样式时通知如何被关闭,而在不应用媒体样式时通知如何被关闭。
采用媒体风格:
with media style
没有媒体风格:
without media style
依赖项(全部是最新的):

val appCompatVersion: String = "1.4.0-alpha01"
val mediaVersion: String = "1.4.0-alpha01"
val media2Version: String = "1.0.0-alpha04"

implementation("androidx.appcompat:appcompat:$appCompatVersion")
implementation("androidx.media:media:$mediaVersion")
implementation("androidx.media2:media2:$media2Version")
private val notification: Notification?
get() {
val controller: MediaControllerCompat = mediaSession.controller ?: return null
val description: MediaDescriptionCompat = controller.metadata?.description ?: return null
val notificationManager: NotificationManager = notificationManager ?: return null

val notificationChannel = NotificationChannel(
CHANNEL_ID,
CHANNEL_NAME,
NotificationManager.IMPORTANCE_NONE
)

if (notificationChannel !in notificationManager.notificationChannels) {
notificationManager.createNotificationChannel(notificationChannel)
}

...

val style = androidx.media.app.NotificationCompat.MediaStyle()
.setMediaSession(controller.sessionToken)
.setShowActionsInCompactView(0, 1, 2)
.setShowCancelButton(false)

return NotificationCompat.Builder(
this,
CHANNEL_ID
).apply {
actions.forEach { addAction(it) }
color = backgroundColor
}
.setContentTitle(description.title)
.setContentText(description.subtitle)

.setSmallIcon(smallIcon)
.setLargeIcon(largeIcon)

.setOngoing(true)
.setColorized(true)
.setAutoCancel(false)
.setAllowSystemGeneratedContextualActions(true)

.setContentIntent(controller.sessionActivity)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)

.setChannelId(CHANNEL_ID)
.setStyle(style)
.build()
}

最佳答案

我面临着同样的问题。设置后setPlaybackState对媒体 session 来说,它是为我修好的。

mediaSession.setPlaybackState(
PlaybackStateCompat.Builder()
.setState(PlaybackStateCompat.STATE_PLAYING, 0, 1f)
.build()
)
检查此链接以获取 setState 的正确参数.
https://developer.android.com/reference/kotlin/android/support/v4/media/session/PlaybackStateCompat.Builder
下面是我的完整媒体 session 。确保为您的音频设置正确的参数值,例如持续时间等。
private fun createMediaSession(): MediaSessionCompat {
val mediaSession = MediaSessionCompat(this, "tag")

mediaSession.setMetadata(MediaMetadataCompat.Builder()
.putLong(MediaMetadata.METADATA_KEY_DURATION, -1L)
.build())

mediaSession.setRepeatMode(PlaybackStateCompat.REPEAT_MODE_ONE)
mediaSession.setFlags(0)

mediaSession.setPlaybackState(
PlaybackStateCompat.Builder()
.setState(PlaybackStateCompat.STATE_PLAYING, 0, 1f)
.build()
)

return mediaSession
}

关于Android 通知 MediaStyle 忽略正在进行的标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67866474/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com