NotificationManager.IMPORTANCE_HIGH по-прежнему нет звука - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь создавать уведомления в Android, но независимо от того, какую важность и приоритет я установил, звука нет. Я предполагаю, что звук (рингтон) обрабатывается самим Android, мне не нужно предоставлять какой-либо mp3 / wav файл. Я пытаюсь на Android 8.1 (фактическое устройство), 8.0 (эмулятор) и 8.1 (эмулятор). Канал уведомлений, созданный на реальном устройстве, по умолчанию отключен, я не знаю, почему и на эмуляторе звук включен, но по-прежнему нет звука при уведомлении

Вот мой код:

public void sendMessage(View view) {
    createNotificationChannel();
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
                    .setSmallIcon(R.drawable.ic_launcher_foreground)
            .setContentTitle("New Notification")
            .setContentText("Lorem Ipsum")
            .setPriority(NotificationCompat.PRIORITY_HIGH);

    NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);

    notificationManager.notify(1, builder.build());
}

private void createNotificationChannel() {
    // Create the NotificationChannel, but only on API 26+ because
    // the NotificationChannel class is new and not in the support library
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        CharSequence name = "basic-channel";
        String description = "Lorem Ipsum";
        int importance = NotificationManager.IMPORTANCE_HIGH;
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
        channel.setDescription(description);
        // Register the channel with the system; you can't change the importance
        // or other notification behaviors after this
        NotificationManager notificationManager = getSystemService(NotificationManager.class);
        notificationManager.createNotificationChannel(channel);
    }
}

Канал на фактическом устройстве

actual device

Канал на эмуляторе

emulator

Ответы [ 3 ]

0 голосов
/ 03 ноября 2019

При создании уведомления необходимо указать, что вы хотите использовать системные значения по умолчанию:

builder.setDefaults(Notification.DEFAULT_ALL)

И не забудьте удалить данные приложения или переустановить приложение, чтобы правильно воссоздать канал уведомления. Канал уведомлений сохранит свою первоначальную конфигурацию, даже если вы заново создадите его в коде.

0 голосов
/ 05 ноября 2019

Основная причина: для реального устройства это проблема OEM, в моем случае это Xiaomi, и я нашел эту ссылку, whatsApp и т. д.

Для эмулятора нам необходимо завершить процесс установки, после которого начинает звучать уведомление.

0 голосов
/ 03 ноября 2019

Проверьте это:

//Define sound URI
Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

  NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
                    .setSmallIcon(R.drawable.ic_launcher_foreground)
            .setContentTitle("New Notification")
            .setContentText("Lorem Ipsum")
            .setPriority(NotificationCompat.PRIORITY_HIGH);
            .setSound(soundUri); //This sets the sound to play
...