setOngoing(false)后无法清除通知

问题描述 投票:0回答:1

我有一个音乐播放器,在播放音频时显示媒体通知。我希望用户能够在音乐暂停时关闭通知。

我必须使用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

android service notifications audio-player android-music-player
1个回答
0
投票

使用stopForeground(false)并重建通知。使用前台服务时,您不必使用setOngoing。有关更多信息,请参阅此page

并搜索Running a service in the foreground

© www.soinside.com 2019 - 2024. All rights reserved.