如何为NotificationCompat.Builder创建的通知添加声音? 我在res中创建了一个原始文件夹并在那里添加了声音。那么我现在如何将其添加到通知中?这是我的通知代码
int NOTIFY_ID=100;
Intent notificationIntent = new Intent(this, Notification.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setContentIntent(pendingIntent)
.setSmallIcon(R.drawable.notification)
.setContentTitle("Warning")
.setContentText("Help!")
NotificationManager mgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mgr.notify(NOTIFY_ID, mBuilder.build());
答案 0 :(得分:47)
我猜这里的问题是如何用Uri
引用声音,因为NotificationCompat.Builder
类中有一个明显的方法 - setSound(Uri soundUri)
。
要访问您需要创建raw
所需的Uri
资源,如下所示:
android.resource:// [PACKAGE_NAME] / [RESOURCE_ID]
所以代码最终看起来像这样:
Uri sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notifysnd);
mBuilder.setSound(sound);
答案 1 :(得分:16)
通过通知播放声音:
Notification notification = new Notification(icon, tickerText, when);
执行正常的通知程序
使用您的通知播放默认声音:
notification.defaults |= Notification.DEFAULT_SOUND;
使用您的通知播放自定义声音:
notification.sound = Uri.parse("file:///sdcard/notification/notification.mp3");
然后只需使用通知管理器发送通知即可。 如果同时使用这两个语句,则应用程序将默认使用默认声音。
答案 2 :(得分:0)
对于Android 8(Oreo)及更高版本,您应该使用Notification Channel来显示通知,如果您未禁用通知,它们将自动发出声音。
对于较旧的设备,您可以使用Notification Builder设置声音。
您可以使用Notification.Builder.setSound()
设置自定义声音,也可以使用
Notification.Builder.setDefaults(NotificationCompat.DEFAULT_SOUND)
设置默认声音。
还有defaults用于振动和照明