MusicInfo data = params[0];
String path = null;
String musicTitle = data.getMusicName();
if (data instanceof LocalMusicInfo) {
path = ((LocalMusicInfo) data).getFilePath();
} else {
List<LocalMusicInfo> musics = NeteaseMusicApplication.getInstance().getDownloadManager().getCompleteTracksByIds(Arrays.asList(new Long[]{data.getId()}));
if (musics.size() > 0) {
path = musics.get(0).getFilePath();
} else {
return false;
}
}
File[] files = new File(NeteaseMusicConst.workPath).listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String filename) {
return filename.startsWith(NeteaseMusicConst.cloudMusicRingtonePrex);
}
});
if (files != null) {
for (File file : files) {
if (!file.isDirectory()) {
file.delete();
}
}
}
String ringtonePath = NeteaseMusicConst.ringtonePath + System.currentTimeMillis();
if (!FileUtils.copy(path, ringtonePath, false)) {
return false;
}
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, ringtonePath);
values.put(MediaStore.MediaColumns.TITLE, musicTitle);
values.put(MediaStore.MediaColumns.DISPLAY_NAME, musicTitle);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
values.put(MediaStore.Audio.Media.ARTIST, data.getSingerName());
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
values.put(MediaStore.Audio.Media.IS_ALARM, false);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(ringtonePath);
context.getContentResolver().delete(uri, String.format("%s='%s'", MediaColumns.DATA, ringtonePath), null);
Uri newUri = context.getContentResolver().insert(uri, values);
try {
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
return true;
} catch (Throwable t) {
return false;
}