Уведомление не может быть очищено после setOngoing (false) - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть музыкальный проигрыватель, который показывает медиа-уведомления во время воспроизведения звука. Я хочу, чтобы пользователь мог отклонить уведомление, когда музыка приостановлена.

Мне нужно использовать 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

1 Ответ

0 голосов
/ 12 сентября 2018

Используйте stopForeground(false) и перестройте уведомление.Вам не нужно использовать setOngoing при использовании службы переднего плана.Для получения дополнительной информации обратитесь к этой странице

и найдите Running a service in the foreground.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...