Маленький значок уведомления не обновляется должным образом

Я использую foregroundService для воспроизведения звука в фоновом режиме и показываю уведомление с действиями.

public NotificationHelper(ForegroundService service) {
    mFG_Service = service;

    mNotificationManager = (NotificationManager) mFG_Service.getSystemService(Context.NOTIFICATION_SERVICE);
}



public void showNotification(ChaptersBO chaptersBO, boolean isPlaying) {
    Notification notification = createNotification(chaptersBO, isPlaying);

    if (notification != null) {
        if (isPlaying) {
            mFG_Service.startForeground(NOTIFICATION_ID.FOREGROUND_SERVICE, notification);
        } else {
            mFG_Service.stopForeground(false);
            mNotificationManager.notify(NOTIFICATION_ID.FOREGROUND_SERVICE, notification);
        }
    }
}


private Notification createNotification(ChaptersBO chapter, boolean isPlaying) {
    if (chapter == null)
        return null;

    NotificationCompat.Builder builder = new NotificationCompat.Builder(mFG_Service);
    try {
        Bitmap sourceBitmap = BitmapFactory.decodeResource(mFG_Service.getResources(), R.drawable.notification_logo);
        Bitmap resizedBitmap = Bitmap.createScaledBitmap(sourceBitmap, 300, 300, false);
        if (resizedBitmap != sourceBitmap) {
            sourceBitmap.recycle();
        }

        builder.setContentTitle("Audio")
                .setContentText(chapter.getChapterNumber())
                .setPriority(Notification.PRIORITY_DEFAULT)
                .setSmallIcon(getSmallIcon(isPlaying))
                .setLargeIcon(resizedBitmap)
                .setShowWhen(false)
                .setOngoing(isPlaying)
                .setContentIntent(getPendingIntent())
                .addAction(R.drawable.ic_notif_prev, "", getAction(ACTION.PREV_ACTION, REQ_CODE_PREVIOUS))
                .addAction(getSmallIcon(isPlaying), "", getAction(ACTION.PLAY_PAUSE_ACTION, REQ_CODE_PLAY_OR_PAUSE))
                .addAction(R.drawable.ic_notif_next, "", getAction(ACTION.NEXT_ACTION, REQ_CODE_NEXT))
                .setDeleteIntent(getStopIntent())
                .setStyle(new NotificationCompat.DecoratedCustomViewStyle());

    } catch (Exception e) {
        e.printStackTrace();
    }
    return builder.build();

}

Я хочу обновить значок уведомления и центральный значок действия при воспроизведении / паузе. В первый раз все работает нормально, но если я уберу уведомление и воспроизведу другой звук, эти значки (обведены на скриншоте ниже) не обновляются.

Чтобы приостановить аудио, я звоню это:

mNotificationManager.notify(NOTIFICATION_ID.FOREGROUND_SERVICE, notification);

Если я заменю это этим

mFG_Service.startForeground(NOTIFICATION_ID.FOREGROUND_SERVICE, notification);

тогда он работает нормально, но в этом случае я не могу очистить уведомление.

Будем благодарны за любые предложения по обновлению этих значков при воспроизведении / паузе, а также по возможности удаления уведомлений при приостановке звука.

0 ответов

Другие вопросы по тегам