2015-02-23 8 views
5

Voglio l'utente sia in grado di scegliere un suono di notifica per la mia app per cui uso il codice qui sotto:Come si aggiunge il suono di notifica della mia app alla lista dei suoni di notifica?

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

Purtroppo, suono di notifica proprio la mia applicazione non è nella lista. Google Hangouts, Calendar e Facebook sono nell'elenco. Presumo che questi programmi abbiano fatto qualcosa per registrarsi con Android, ma non riesco a trovare alcuna documentazione su come farlo.

risposta

3

prima copiare il file nella cartella rigntones (Vedi Environment.DIRECTORY_RINGTONES)

quindi registrare il suono:

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