2014-10-17 61 views
0

我有一個關於將音樂(存儲在SD卡中)添加到Android鈴聲的問題。我這裏的代碼,將其插入:在Android上向鈴聲添加音樂的高效方式

ContentValues values = new ContentValues(); 
    values.put(MediaStore.MediaColumns.DATA, filePath); 
    values.put(MediaStore.MediaColumns.TITLE, songTitle); 
    values.put(MediaStore.MediaColumns.SIZE, file.length()); 
    values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/" + fileType); 
    values.put(MediaStore.Audio.Media.ARTIST, singerName); 
    values.put(MediaStore.Audio.Media.DURATION, duration); 
    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, true); 

    /* delete bug here */ 
    Uri uri = MediaStore.Audio.Media.getContentUriForPath(filePath); 
    Uri newUri = context.getContentResolver().insert(uri, values); 

    if (isRingtone) 
     RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri); 
    if (isSMS) 
     RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_NOTIFICATION, newUri); 

後,我已經添加了ringtone1到Android的設置,我再次鈴聲添加到設置,然後我在鈴聲列表2 ringtone1。

奇怪的是,當我將鈴聲插入通知時,它只會顯示在通知列表中。但如果我刪除了鈴聲,它將在電話鈴聲列表和通知鈴聲列表中被刪除。刪除後我沒有設置鈴聲的列表將來到「未知鈴聲」。

所以我想找到一種方法來檢查鈴聲是否已經存在於設置中。其次,我想找到一種方法來獲取添加到設置中的鈴聲的URI。

如果您沒有得到該問題,請在此給我留言。對不起,我的英語不好。非常感謝你。

回答

2

做這樣的事情找到,如果你已經添加了URIRingtoneManager使用

String[] columns = { 
     MediaStore.MediaColumns.TITLE, 
     MediaStore.MediaColumns._ID 
}; 

String selection = MediaStore.Audio.Media.DATA + "=?"; 
String selectionArgs[] = { k.getAbsolutePath() }; 

Cursor cursor = context.getContentResolver().query(uri, columns, selection, selectionArgs, null); 

這會爲你帶來,如果你已經添加了它,並得到URIsetActualDefaultRingtoneUri()

使用

它的解析(uri+"/"+cursor.getString(1)); 希望它有幫助