2015-02-23 4 views
5

Я хочу, чтобы пользователь мог выбрать звук уведомления для моего приложения, поэтому я использую код ниже:Как добавить звук уведомления приложения в список звуковых уведомлений?

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

К сожалению, собственные звуковое оповещение моего приложения не находится в списке. Google Hangouts, Календарь и Facebook :. Я предполагаю, что эти программы сделали что-то для регистрации в android, но я не могу найти документацию о том, как это сделать.

ответ

3

Сначала скопируйте файл в папку rigntones (см Environment.DIRECTORY_RINGTONES)

Затем регистрируют звук:

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