2012-12-07 15 views
35

Skopiowałem plik mp3 (kalimba.mp3) do folderu raw w folderze res. Ale kiedy powiadomienie zostanie uruchomione, generuje domyślny dźwięk.Jak ustawić powiadomienie z dźwiękiem niestandardowym w Androidzie

ten sposób robię powiadomienia:

protected void GenerateNotify() { 

    NotificationManager myNotificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification=new Notification(android.R.drawable.ic_btn_speak_now,"hi",100); 
    Intent intent=new Intent(getApplicationContext(),as.class); 
    PendingIntent contentintent=PendingIntent.getBroadcast(getApplicationContext(),0, intent, 0); 
    notification.setLatestEventInfo(getApplicationContext(), "Hi","date", contentintent); 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    notification.sound = Uri.parse("android.resource://com.example.serviceproject/" + R.raw.kalimba); 
    myNotificationManager.notify(NOTIFICATION_ID,notification); 
} 
+0

Twój kod wygląda ok. Spróbuj ponownie uruchomić emulator lub telefon. http://stackoverflow.com/questions/5682321/android-notification-sound-defaulting-back-instead-of-playing-custom-sound –

Odpowiedz

102
notification.sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notifysnd); 
notification.defaults = Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE; 

jeśli zdefiniowano DEFAULT_SOUND, wówczas domyślny dźwięk zastępuje dowolny dźwięk

+0

jak dodać plik .mp3 w powiadomieniu. –

+0

umieść plik mp3 w surowym folderze – QuokMoon

+2

Jeśli nie piszę 'notification.defaults', to jaka jest możliwość odtwarzania niestandardowego dźwięku? –

16

R.raw.kalimba jest liczbą całkowitą ID zasobu; chcesz nazwę o nazwie zasobu dźwiękowego w tym Uri. Więc spróbuj:

notification.sound = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE 
     + "://" + getPackageName() + "/raw/kalimba"); 
3

spróbuj tego:

Uri dźwięku = Uri.parse ("android.resource: //" + context.getPackageName() + „/ raw/notifysnd); zgłoszenie. setSound (dźwięk);

1

należy zastąpić ten wiersz:

notification.sound = Uri.parse("android.resource://com.example.serviceproject/" + R.raw.kalimba); 

z tym:

notification.setSound(Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getPackageName() + "/raw/kalimba")); 

lub w niektórych przypadkach:

notification.sound = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getPackageName() + "/raw/kalimba"); 
Powiązane problemy