기본 소리 알림에 Uri?


123

Notification.Builder 를 사용하여 알림 을 작성합니다. 이제 다음과 함께 기본 소리 알림을 사용하고 싶습니다.

builder.setSound(Uri sound)

그러나 기본 알림에 대한 Uri는 어디에 있습니까?

답변:


267

RingtoneManager 를 사용하여 기본 알림 Uri를 다음과 같이 가져옵니다.

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

builder.setSound(uri);

50
감사. 하지만 setDefaults (Notification.DEFAULT_SOUND)도 사용할 수 있음을 보았습니다 ;-)
StefMa

8
당신은이 일 전달할 수 있습니다Settings.System.DEFAULT_NOTIFICATION_URI
Pratik Butani

46

builder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI) 잘 작동


5
설정은 import android.provider.Settings에서 가져옵니다.
Chris Knight

29

사용하는 두 가지 옵션 Default Notification Sound은 다음 과 같습니다.

mBuilder.setDefaults(Notification.DEFAULT_SOUND);

또는 RingtoneManager 클래스 사용 :

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

12

이 모든 방법이 작동합니다.

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

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

  3. mBuilder.setDefaults(Notification.DEFAULT_SOUND);

Google 문서


3

이것도 사용할 수 있습니다.

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

application기본 시스템 사운드가 아닌 채널 사운드 를 받고 싶습니다. NotificationChannel channel = new NotificationChannel(ApplicationClass.getInstance().HighNotificationChannelID, getString(R.string.incoming_sms), NotificationManager.IMPORTANCE_HIGH); channel.getSound();반환 과 함께 시도해 default system sound주십시오
Sagar

3

시스템 기본 알림

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

0

누군가가 여전히 필요하다면 이것은 소리와 진동으로 절대적으로 잘 작동합니다.

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

예를 들어 진동 변경을 비활성화하려면 새로운 long [] {0,0,0,0,0}; 소리로 할 수있는 것과 거의 비슷하거나 if else 문을 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.