У меня есть музыкальный проигрыватель, который показывает медиа-уведомления во время воспроизведения звука. Я хочу, чтобы пользователь мог отклонить уведомление, когда музыка приостановлена.
Мне нужно использовать startForeground, чтобы служба продолжала работать и оставалась привязанной к активности. Я пытался использовать канал уведомлений, после того, как я отключил активность, воспроизведение также останавливается, что не то, что я хочу (код все еще там, закомментирован).
Когда отображается уведомление, я вызываю startForeground. setOngoing имеет значение PlayState == STATE_PLAYING. Я вызываю stopForeground, когда служба уничтожена или когда PlayState == null || STOPPED.
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