我正在尝试构建一个媒体播放器,但我无法弄清楚当用户杀死应用时如何保持通知持续存在。音乐继续播放,但通知消失。如果我不杀死该应用程序,通知将保留。奇怪的是,它确实出现在锁定屏幕上,但它没有控制,但这是另一天的问题。
以下是一些相关代码:
private fun buildNotification(action: Notification.Action) {
var style: Notification.MediaStyle = Notification.MediaStyle().setMediaSession(ms.sessionToken)
var intent = Intent(applicationContext, MediaPlayerService::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
var pIntent: PendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
var builder: Notification.Builder = Notification.Builder(this)
.setSmallIcon(R.drawable.small_app_icon)
.setTicker(prefs.getString("EP_TITLE", ""))
.setContentTitle(prefs.getString("EP_TITLE", ""))
.setContentText("")
.setContentIntent(pIntent)
.setOngoing(true)
.setVisibility(Notification.VISIBILITY_PUBLIC)
.setStyle(style)
builder.addAction(generateAction(Icon.createWithResource(baseContext, R.drawable.back10s), "Back 10 Seconds", ACTION_REWIND))
builder.addAction(action)
builder.addAction(generateAction(Icon.createWithResource(baseContext, R.drawable.up30s), "Forward 30 Seconds", ACTION_FAST_FORWARD))
style.setShowActionsInCompactView(0,1,2)
startForeground(246, builder.build())
}
在服务中仅调用stopForeground两次。
private fun pauseMedia() {
if (mp!!.isPlaying) {
mp!!.pause()
resumePosition = mp!!.currentPosition
stopForeground(false)
}
}
override fun onDestroy() {
super.onDestroy()
stopForeground(true)
}
感谢您提供任何帮助!
答案 0 :(得分:0)
尝试在startForeground()之前通知相同的通知。
val notification = builder.build()
NotificationManagerCompat.from(service).notify(246, notification)
Refer this project。这也是一个音乐播放器,它使用这种方法来显示MediaStyleNotification。