Uri默认声音通知?
我使用Notification.Builder来build立通知。 现在我想用默认声音通知:
builder.setSound(Uri sound)
但是Uri的默认通知在哪里呢?
尝试使用RingtoneManager获取默认通知Uri为:
Uri uri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); builder.setSound(uri);
builder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
适用
使用Default Notification Sound
的两个选项是:
mBuilder.setDefaults(Notification.DEFAULT_SOUND);
或者使用RingtoneManager类:
mBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
所有这些方法的工作
-
mBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
-
mBuilder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
-
mBuilder.setDefaults(Notification.DEFAULT_SOUND);
Google文档
你也可以使用这个:
Uri uri = Uri.parse(PreferenceManager.getDefaultSharedPreferences(this). getString("pref_tone", "content://settings/system/notification_sound")); mBuilder.setSound(uri);
用于系统默认通知
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
用于自定义通知
Uri customSoundUri = Uri.parse(“android.resource://”+ getPackageName()+“/”+ R.raw.twirl);
声音来源(我改名为“twirl”并放置在res-> raw文件夹中)
https://notificationsounds.com/message-tones/twirl-470
通知生成器:
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.notificaion_icon) .setContentTitle("Title here") .setContentText("Body here") .setSound(defaultSoundUri) .setAutoCancel(true); NotificationManager mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); mNotifyMgr.notify(id, mBuilder.build());
如果还有人需要,这个声音和振动绝对正常。
Context context = getApplicationContext(); long[] vibrate = new long[] { 1000, 1000, 1000, 1000, 1000 }; Intent notificationIntent = new Intent(context, MainActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); Resources res = context.getResources(); Notification.Builder builder = new Notification.Builder(context); builder.setContentIntent(contentIntent) .setSmallIcon(R.drawable.notif) .setTicker("lastWarning") .setWhen(System.currentTimeMillis()) .setAutoCancel(true) .setVibrate(vibrate) //.setContentTitle(res.getString(R.string.notifytitle)) .setContentTitle("Notification") .setSound(Settings.System.DEFAULT_NOTIFICATION_URI) //.setContentText(res.getString(R.string.notifytext)) .setContentText("Notification text"); // Notification notification = builder.getNotification(); // until API 16 Notification notification = builder.build(); NotificationManager notificationManager = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(NOTIFY_ID, notification);
如果你想禁用例如振动变化振动到新的长[] {0,0,0,0,0}; 几乎类似的东西,你可以做声音或使用如果else语句。