我有一个自定义的mp3声音,我在我的通知上使用。它在API 26以下的所有设备上都工作正常。我试图在通知通道上设置声音,但仍然没有工作。它播放默认声音。
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, channelId)
.setAutoCancel(true)
.setSmallIcon(R.drawable.icon_push)
.setColor(ContextCompat.getColor(this, R.color.green))
.setContentTitle(title)
.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notification))
.setDefaults(Notification.DEFAULT_VIBRATE)
.setStyle(new NotificationCompat.BigTextStyle().bigText(message))
.setContentText(message);
Notification notification = builder.build();
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_DEFAULT);
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
.build();
channel.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notification), audioAttributes);
notificationManager.createNotificationChannel(channel);
}
notificationManager.notify(1, notification);
6条答案
按热度按时间tpxzln5u1#
您可能已经使用默认声音创建了最初的频道。一旦创建了频道,就无法更改。您需要重新安装应用程序或使用新的频道ID创建频道。
8iwquhpp2#
我用RingtoneManager,它是为我工作.尝试thius代码:
c0vxltue3#
在奥利奥中,您需要为此创建一个通道。https://developer.android.com/reference/android/app/NotificationChannel.html
wnavrhmk4#
默认声音将覆盖任何声音。
你需要把它放在你的代码中:
参考:
Android notifications
3xiyfsfu5#
除了Faxriddin的答案之外,您还可以通过检查
importance of the notification channel
和are enabled notifications
参数来确定何时应该关闭通知声音。8ftvxx2r6#
我一直在开发具有类似功能的应用程序。正如帕维尔·纳多尔斯基所提到的,我们每次都要重新创建频道来改变铃声。为此我写了一个助手。希望它能帮助到别人。