2015-02-23 20 views
5

chcę użytkownika, aby być w stanie wybrać dźwięk powiadomienia dla mojego app więc używam poniższy kod:Jak dodać dźwięk powiadomienia mojej aplikacji do listy dźwięków powiadomień?

Intent ringtoneIntent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); 
ringtoneIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false); 
ringtoneIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false); 
ringtoneIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION); 
ringtoneIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Choose"); 
ringtoneIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) null); 
fragment.startActivityForResult(ringtoneIntent, REQUEST_RINGTONE); 

Niestety, własny dźwięk mojego app za zgłoszenie nie jest na liście. Google Hangouts, Kalendarz i Facebook to na liście. Zakładam, że te programy zrobiły coś, co można zarejestrować w systemie Android, ale nie mogę znaleźć żadnej dokumentacji, jak to zrobić.

Odpowiedz

3

Pierwszy skopiować plik do folderu rigntones (Patrz Environment.DIRECTORY_RINGTONES)

Następnie zarejestrować dźwięk:

ContentValues values = new ContentValues(); 
values.put(MediaStore.MediaColumns.DATA, file.getAbsolutePath()); 
values.put(MediaStore.MediaColumns.TITLE, nameOfSound); 
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3"); 
values.put(MediaStore.Audio.Media.ARTIST, yourAppName); 
values.put(MediaStore.Audio.Media.IS_RINGTONE, true); 
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true); 
values.put(MediaStore.Audio.Media.IS_ALARM, true); 
values.put(MediaStore.Audio.Media.IS_MUSIC, false); 

Uri uri = MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath()); 
getContentResolver().insert(uri, values);