2012-12-26 27 views
20

Jak dodać dźwięk do powiadomienia utworzonego przez NotificationCompat.Builder? Utworzyłem folder raw w res i dodałem tam dźwięk. Jak mogę teraz dodać go do powiadomienia? To jest mój kod PowiadomienieJak dodać dźwięk do powiadomienia?

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

Istnieje metoda [setSound] (http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#setSound (android.net.Uri)) w [NotificationCompat.Builder ] (http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html). Czy tego właśnie szukasz? –

Odpowiedz

40

Zgaduję problem tutaj jest jak odwołać dźwięk z Uri, jak tam jest oczywisty sposób w klasie NotificationCompat.Builder - setSound(Uri soundUri).

Aby uzyskać dostęp do raw zasobów potrzebnych do stworzenia Uri następująco:

android.resource://[PACKAGE_NAME]/[RESOURCE_ID]

więc kod może w końcu wygląda tak:

Uri sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notifysnd); 
mBuilder.setSound(sound); 
+0

W jakim formacie musi być plik dźwiękowy? Otrzymuję dźwięk domyślny zamiast własnego. – karl

+2

Odpowiedziałem na własne pytanie z próbą i błędem: 1) mp3 działa, wav nie, i 2) Muszę wyłączyć domyślny dźwięk, budując powiadomienie, a następnie wykonując 'n.defaults & = ~ Notification.DEFAULT_SOUND ; ' – karl

+3

Jeśli korzystasz z Notification.Builder, * builder.setDefaults (~ Notification.DEFAULT_SOUND), * zrobi lewy. Dzięki @karl za cynk – Maragues

15

Aby odtworzyć dźwięk z Twojego zgłoszenia:

Notification notification = new Notification(icon, tickerText, when); 

Czy normalne powiadomienie Procedury

Aby odtworzyć dźwięk domyślny z zgłoszenia:

notification.defaults |= Notification.DEFAULT_SOUND; 

Aby odtworzyć dźwięk z niestandardową zgłoszenia:

notification.sound = Uri.parse("file:///sdcard/notification/notification.mp3"); 

Następnie wystarczy użyć menadżera powiadomień, aby wysłać zgłoszenie. Jeśli używane są obie te instrukcje, aplikacja domyślnie użyje domyślnego dźwięku.

Powiązane problemy