简体   繁体   中英

Set .mp3 file as ringtone from assets

I'm trying to set a .mp3 file sited into /assets folder as ringtone. This is my code

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

When I go to settings (settings of the phone) I see the name of the song that I set as ringtone but when someone calls me, it plays the old ringtone.

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

You have placed ringtone after setting it to mUri.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM