在Android中修改传入通知的声音

时间:2019-05-14 13:58:39

标签: android kotlin android-notifications

我已经设置了一个sudo apt-get install -y openjdk-8-jdk sudo apt-get install -y default-jdk export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 来监听通知。我需要修改以下方法捕获的通知的声音/警报音:

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 ) 的声音/提示音并将其显示给用户?我需要重新发布/重新创建吗?

2 个答案:

答案 0 :(得分:1)

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)
  }
}

答案 1 :(得分:1)

要在ismail alaoui的答案中添加一些内容-您所做的工作可能应该适用于Oreo之前的android设备,但是对于Oreo及更高版本,您需要创建一个通知频道,将自定义声音分配给该频道。请参阅https://developer.android.com/guide/topics/ui/notifiers/notifications

还请记住,用户可能随时更改通知频道的声音:)

因此,仅剩下一个问题-您要在哪个Android版本上测试解决方案?