2015-02-23 74 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环聊,日历和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);