如何解决如何在android studio中将下载的声音设置为铃声?
我从 url 下载了一些铃声,我正在尝试设置为铃声。
下载方法
public void downloadringtones(Uri uri,String title) {
request = new DownloadManager.Request(uri);
//String title = URLUtil.guessFileName(String.valueOf(uri),null,null);
request.setTitle(title);
request.setDescription("Downloading File please wait...");
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_ringtoneS,title);
downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
id = downloadManager.enqueue(request);
//String s = downloadManager.getMimeTypeForDownloadedFile(id);
Toast.makeText(this,"Downloading...",Toast.LENGTH_SHORT).show();
}
和类型确定方法
public int setType(String type,ContentValues values) {
if (type.equals("ringtone")) {
values.put(MediaStore.Audio.Media.IS_ringtone,true);
return ringtoneManager.TYPE_ringtone;
} else if (type.equals("alarm")) {
values.put(MediaStore.Audio.Media.IS_ALARM,true);
return ringtoneManager.TYPE_ALARM;
} else if (type.equals("notif")) {
values.put(MediaStore.Audio.Media.IS_NOTIFICATION,true);
return ringtoneManager.TYPE_NOTIFICATION;
} else if (type.equals("person")) {
setPersonalringtone(downloaded_uri);
}
return -1;
}
设置方法(由于 broadcastReceiver 下载完成时的启动方法)
public void setringtone(Uri mUri,String title,String type) {
downloadringtones(mUri,title);
broadcastReceiver.setDownloadCompletedListener(uri -> {
ContentValues values = new ContentValues();
File file = new File(uri.getPath());
downloaded_uri = uri;
String uri_id = downloaded_uri.getLastPathSegment();
int set_type = setType(type,values);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
if (!Settings.System.canWrite(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
startActivity(intent);
} else {
values.put(MediaStore.Audio.Media._ID,uri_id);
values.put(MediaStore.Audio.Media.disPLAY_NAME,title);
values.put(MediaStore.Audio.Media.MIME_TYPE,"audio/mpeg");
Uri tempuri = MediaStore.Audio.Media.getContentUri(MediaStore.VOLUME_EXTERNAL);
Uri newUri = getBaseContext().getContentResolver()
.insert(tempuri,values);
ringtoneManager.setActualDefaultringtoneUri(this,set_type,newUri);
Toast.makeText(this,"ringtone Set",Toast.LENGTH_SHORT).show();
}
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (!Settings.System.canWrite(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
startActivity(intent);
} else {
values.put(MediaStore.MediaColumns.DATA,file.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE,title);
values.put(MediaStore.MediaColumns.MIME_TYPE,"audio/mpeg");
Uri tempuri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
IslamicringtonesMainActivity.this.getContentResolver()
.delete(tempuri,MediaStore.MediaColumns.DATA + "=\"" + file.getAbsolutePath() + "\"",null);
Uri newUri = IslamicringtonesMainActivity.this.getContentResolver()
.insert(tempuri,Toast.LENGTH_SHORT).show();
}
} else {
values.put(MediaStore.MediaColumns.DATA,file.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE,title);
values.put(MediaStore.MediaColumns.MIME_TYPE,"audio/mpeg");
Uri tempuri = MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());
IslamicringtonesMainActivity.this.getContentResolver()
.delete(tempuri,null);
Uri newUri = IslamicringtonesMainActivity.this.getContentResolver()
.insert(tempuri,values);
ringtoneManager.setActualDefaultringtoneUri(this,newUri);
Toast.makeText(this,Toast.LENGTH_SHORT).show();
}
},request,downloadManager,id);
}
我的广播接收器
public class DownloadbroadcastReceiver extends broadcastReceiver {
private downloadCompletedListener completedListener;
DownloadManager downloadManager;
DownloadManager.Request request;
long id;
@Override
public void onReceive(Context context,Intent intent) {
if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(intent.getAction())) {
if(id > 0){
completedListener.onDownloaded(downloadManager.getUriForDownloadedFile(id));
}
}
}
public interface downloadCompletedListener {
void onDownloaded(Uri uri);
}
public void setDownloadCompletedListener(downloadCompletedListener listener,DownloadManager.Request request,DownloadManager downloadManager,long id) {
this.completedListener = listener;
this.request = request;
this.downloadManager = downloadManager;
this.id = id;
}
当我进入铃声设置(手机设置)时,我会看到我设置为铃声的歌曲名称,但是当有人打电话给我时,它什么也不播放。 预先感谢您的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。