Uri à la notification sonore par défaut?


123

J'utilise Notification.Builder pour créer une notification. Maintenant, je veux utiliser la notification sonore par défaut avec:

builder.setSound(Uri sound)

Mais où est l'URI de la notification par défaut?

Réponses:


267

essayez d'utiliser RingtoneManager pour obtenir l'URI de notification par défaut comme:

Uri uri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

builder.setSound(uri);

50
Merci. Mais j'ai vu que je peux aussi utiliser setDefaults (Notification.DEFAULT_SOUND) ;-)
StefMa

8
vous pouvez passer celui-ci aussiSettings.System.DEFAULT_NOTIFICATION_URI
Pratik Butani

46

builder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI) fonctionne aussi bien


5
Les paramètres proviennent de l'importation android.provider.Settings;
Chris Knight

29

Les deux options pour utiliser le Default Notification Soundsont:

mBuilder.setDefaults(Notification.DEFAULT_SOUND);

ou en utilisant la classe RingtoneManager :

mBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));

12

toutes ces méthodes fonctionnent

  1. mBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));

  2. mBuilder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);

  3. mBuilder.setDefaults(Notification.DEFAULT_SOUND);

Documentation Google


3

Vous pouvez également l'utiliser:

Uri uri = Uri.parse(PreferenceManager.getDefaultSharedPreferences(this).
            getString("pref_tone", "content://settings/system/notification_sound"));
mBuilder.setSound(uri);

Je veux obtenir le applicationson du canal et non le son du système par défaut essayé avec des NotificationChannel channel = new NotificationChannel(ApplicationClass.getInstance().HighNotificationChannelID, getString(R.string.incoming_sms), NotificationManager.IMPORTANCE_HIGH); channel.getSound();retours default system sounds'il vous plaît aidez
moi

3

Pour la notification par défaut du système

Uri uri = RingtoneManager.getDefaultUri (RingtoneManager.TYPE_NOTIFICATION);

Pour une notification personnalisée

Uri customSoundUri = Uri.parse ("android.resource: //" + getPackageName () + "/" + R.raw.twirl);

Source du son de notification (j'ai renommé "twirl" et placé dans le dossier res-> raw)

https://notificationsounds.com/message-tones/twirl-470

Générateur de notifications:

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());

0

Si quelqu'un en a encore besoin, cela fonctionne parfaitement avec le son et les vibrations.

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

Si vous souhaitez désactiver, par exemple, le changement de vibration vibre à nouveau long [] {0,0,0,0,0}; Une chose presque similaire que vous pouvez faire avec le son ou utiliser l'instruction if else.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.