Изменить звук входящего уведомления в Android - PullRequest
0 голосов
/ 14 мая 2019

Я настроил NotificationListenerService, который прослушивает уведомления. Мне нужно изменить звуковой сигнал / тональный сигнал уведомлений, который фиксируется в методе ниже:

override fun onNotificationPosted(sbn: StatusBarNotification?) {
    super.onNotificationPosted(sbn)
    // Modify the tone here and notify ( the notification ) it again
}

Что я пробовал до сих пор (не воспроизводит звук):

notification.notification.defaults = android.app.Notification.DEFAULT_VIBRATE
notification.notification.sound = Uri.parse(sharedPreferences.getString(getString( R.string.ringtone_key ) , Settings.System.DEFAULT_NOTIFICATION_URI.toString() ))
manager.notify( RECREATE_NOTIFICATION_ID , notification.notification )

Мой вопрос звучит здесь:

Как я могу изменить звуковой сигнал / тон оповещения StatusBarNotification, пойманный вышеупомянутым способом, и отобразить его для пользователя? Нужно ли мне повторно или повторно создавать его?

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Чтобы добавить некоторый контекст к ответу Исмаила Алауи - то, что вы сделали, вероятно, должно работать на устройствах до Android Oreo, но для Oreo и выше вам нужно создать канал уведомлений, которому будет назначен пользовательский звук. См. https://developer.android.com/guide/topics/ui/notifiers/notifications.

Пожалуйста, помните, что пользователь может изменить звук канала уведомлений в любой момент:)

Так что остается только вопрос - на какой версии Android вы тестируете свое решение?

1 голос
/ 14 мая 2019
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
{
  if (soundUri != null)
  {
    // Changing Default mode of notification
    notificationBuilder.setDefaults(Notification.DEFAULT_VIBRATE)
    // Creating an Audio Attribute
    val audioAttributes = AudioAttributes.Builder()
    .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
    .setUsage(AudioAttributes.USAGE_ALARM)
    .build()
    // Creating Channel
    val notificationChannel = NotificationChannel("CH_ID", "Testing_Audio", NotificationManager.IMPORTANCE_HIGH)
    notificationChannel.setSound(soundUri, audioAttributes)
    mNotificationManager.createNotificationChannel(notificationChannel)
  }
}
...