我有一个音乐播放器,在播放音频时显示媒体通知。我希望用户能够在音乐暂停时关闭通知。
我必须使用startForeground,以便服务将继续运行并且它将保持与活动的连接。我尝试使用通知通道,一旦我杀死了活动回放停止,这不是我想要的(代码仍在那里,注释掉)。
显示通知时,我调用startForeground。 setOngoing设置为playbackState == STATE_PLAYING。我在销毁服务或者播放renderState == null ||时调用stopForeground已停止。
Pastebin:https://pastebin.com/FNTSSzjS
代码段(因为您需要包含带有pastebin的代码)
private void addPlayPauseAction(NotificationCompat.Builder builder) {
String label;
int icon;
PendingIntent intent;
if (playbackState.getState() == PlaybackStateCompat.STATE_PLAYING) {
label = service.getString(R.string.play_pause);
icon = android.R.drawable.ic_media_pause;
intent = intentPause;
builder.setOngoing(true);
} else {
label = service.getString(R.string.play_pause);
icon = android.R.drawable.ic_media_play;
intent = intentPlay;
builder.setOngoing(false);
}
builder.addAction(new NotificationCompat.Action(icon, label, intent));
}
PasteBin中的相关方法是startNotification,stopNotification,createNotification,addPlayPauseAction和setNotificationPlaybackState
使用stopForeground(false)
并重建通知。使用前台服务时,您不必使用setOngoing
。有关更多信息,请参阅此page
并搜索Running a service in the foreground
。