将.mp3文件设置为资产中的铃声

时间:2014-12-22 10:26:55

标签: java android

我正在尝试将位于/ assets文件夹中的.mp3文件设置为铃声。这是我的代码

File file = new File("file:///android_asset/my_sounds/", name);

ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, file.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, name.replace(".mp3", ""));
values.put(MediaStore.MediaColumns.SIZE, file.length());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, 
        media.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST));
values.put(MediaStore.Audio.Media.DURATION, 
        media.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));

uri = MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());
mUri = getContext().getContentResolver().insert(uri, values);
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);       

RingtoneManager.setActualDefaultRingtoneUri(getContext(), 
        RingtoneManager.TYPE_RINGTONE, mUri);

当我进入设置(手机的设置)时,我会看到我设置为铃声的歌曲的名称,但当有人给我打电话时,它会播放旧的铃声。

1 个答案:

答案 0 :(得分:1)

File file = new File("file:///android_asset/my_sounds/", name);

ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, file.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, name.replace(".mp3", ""));
values.put(MediaStore.MediaColumns.SIZE, file.length());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, 
        media.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST));
values.put(MediaStore.Audio.Media.DURATION, 
        media.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);       

uri = MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());
mUri = getContext().getContentResolver().insert(uri, values);


RingtoneManager.setActualDefaultRingtoneUri(getContext(), 
        RingtoneManager.TYPE_RINGTONE, mUri);

您在设置为mUri后放置了铃声。