add Ringtone at phone ringtone

来源:互联网 发布:java常用算法手册评价 编辑:程序博客网 时间:2024/05/29 03:14
 接到一个任务:在settings里面的phone ringtone添加手机自定义铃声。问题的关键是如何处理好从手机的内存里读出所有的音频文件,并设置为手机的电话铃声。关键这俩个类:MedieStore、RingtoneManager。

列出手机里面的所有音频文件:
for (int i = 0; i < mAudioCursor.getCount(); i++) {
mAudioCursor.moveToNext();
int indexTitle = mAudioCursor
.getColumnIndex(MediaStore.Audio.AudioColumns.TITLE);
String path = mAudioCursor.getString(mAudioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
String strTitle = mAudioCursor.getString(indexTitle);
mItems[i] = strTitle;
Itemsuri[i] = path;
}

将选择的铃声设置为手机铃声:
private void updateMediaStore(String path){
ContentValues cv = new ContentValues();
Uri uri = MediaStore.Audio.Media.getContentUriForPath(path);
Cursor cursor = this.getContentResolver().query(uri, null,
MediaStore.MediaColumns.DATA + “=?”, new String[] { path },null);
String _id = null;
if (cursor.moveToFirst() && cursor.getCount() > 0) {
_id = cursor.getString(0);
cv.put(MediaStore.Audio.Media.IS_RINGTONE, true);
cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
cv.put(MediaStore.Audio.Media.IS_ALARM, true);
cv.put(MediaStore.Audio.Media.IS_MUSIC, true);
}
getContentResolver().update(uri, cv, MediaStore.MediaColumns.DATA + “=?”,new String[] { path });
Uri newUri = ContentUris.withAppendedId(uri, Long.valueOf(_id));
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALL, newUri);
}
“`

0 0
原创粉丝点击