我有一个音乐播放器,可在播放音频时显示媒体通知。我希望用户能够在音乐暂停时取消通知。
我必须使用startForeground,以便该服务将继续运行并保持与活动的连接。我尝试过使用通知通道,一旦我杀死了活动,回放也会停止,这不是我想要的(代码仍在其中,已注释掉)。
显示通知时,我叫startForeground。 setOngoing设置为playingState == STATE_PLAYING。当服务被销毁或playbackState == null ||时,我叫stopForeground。已停止。
垃圾箱: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
答案 0 :(得分:0)
使用stopForeground(false)
并重建通知。使用前台服务时不必使用setOngoing
。有关更多信息,请参阅此page
并搜索Running a service in the foreground
。