下面列出了android.media.RingtoneManager#setActualDefaultRingtoneUri ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* 设置铃声
*/
private void setRingtone(AudioBean localMusic) {
Uri uri = MediaStore.Audio.Media.getContentUriForPath(localMusic.getPath());
// 查询音乐文件在媒体库是否存在
Cursor cursor = getContext().getContentResolver().query(uri, null,
MediaStore.MediaColumns.DATA + "=?", new String[]{localMusic.getPath()}, null);
if (cursor == null) {
return;
}
if (cursor.moveToFirst() && cursor.getCount() > 0) {
String _id = cursor.getString(0);
ContentValues values = new ContentValues();
values.put(MediaStore.Audio.Media.IS_MUSIC, true);
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_ALARM, false);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
values.put(MediaStore.Audio.Media.IS_PODCAST, false);
getContext().getContentResolver().update(uri, values, MediaStore.MediaColumns.DATA + "=?",
new String[]{localMusic.getPath()});
Uri newUri = ContentUris.withAppendedId(uri, Long.valueOf(_id));
RingtoneManager.setActualDefaultRingtoneUri(getContext(), RingtoneManager.TYPE_RINGTONE, newUri);
ToastUtils.showShort("设置铃声成功");
}
cursor.close();
}
private void setAsRingtone(final Activity context, int position) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.System.canWrite(context)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + context.getPackageName()));
context.startActivity(intent);
} else {
File music = new File(MyApplication.getMusicListNow().get(position).getMusicData()); // path is a file to /sdcard/media/ringtone
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, music.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, MyApplication.getMusicListNow().get(position).getMusicTitle());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, MyApplication.getMusicListNow().get(position).getMusicArtist());
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);
//Insert it into the database
Uri uri = MediaStore.Audio.Media.getContentUriForPath(music.getAbsolutePath());
context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + music.getAbsolutePath() + "\"", null);
Uri newUri = context.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
Toast.makeText(context, "已成功设置为来电铃声", Toast.LENGTH_SHORT).show();
//Snackbar
// Snackbar.make(mLayout, "已成功设置为来电铃声", Snackbar.LENGTH_LONG).show();
}
}
public static void setMyRingtone(Context context)
{
DBManager dbManager = DBManager.getInstance(context);
int musicId = MyMusicUtil.getIntShared(Constant.KEY_ID);
String path = dbManager.getMusicPath(musicId);
File sdfile = new File(path);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
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(sdfile.getAbsolutePath());
Uri newUri = context.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
Toast.makeText( context,"设置来电铃声成功!", Toast.LENGTH_SHORT ).show();
}
public static void setMyRingtone(Context context)
{
DBManager dbManager = DBManager.getInstance(context);
int musicId = MyMusicUtil.getIntShared(Constant.KEY_ID);
String path = dbManager.getMusicPath(musicId);
File sdfile = new File(path);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
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(sdfile.getAbsolutePath());
Uri newUri = context.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
Toast.makeText( context,"设置来电铃声成功!", Toast.LENGTH_SHORT ).show();
}
/**
* Sets the ringtone of type specified by the name.
*
* @param name should be Settings.System.RINGTONE or Settings.System.NOTIFICATION_SOUND.
* @param value can be a canonicalized uri or "_silent" to indicate a silent (null) ringtone.
*/
private void setRingtone(String name, String value) {
// If it's null, don't change the default
if (value == null) return;
Uri ringtoneUri = null;
if (SILENT_RINGTONE.equals(value)) {
ringtoneUri = null;
} else {
Uri canonicalUri = Uri.parse(value);
ringtoneUri = mContext.getContentResolver().uncanonicalize(canonicalUri);
if (ringtoneUri == null) {
// Unrecognized or invalid Uri, don't restore
return;
}
}
final int ringtoneType = Settings.System.RINGTONE.equals(name)
? RingtoneManager.TYPE_RINGTONE : RingtoneManager.TYPE_NOTIFICATION;
RingtoneManager.setActualDefaultRingtoneUri(mContext, ringtoneType, ringtoneUri);
}
/**
* Sets the ringtone of type specified by the name.
*
* @param name should be Settings.System.RINGTONE or Settings.System.NOTIFICATION_SOUND.
* @param value can be a canonicalized uri or "_silent" to indicate a silent (null) ringtone.
*/
private void setRingtone(String name, String value) {
// If it's null, don't change the default
if (value == null) return;
Uri ringtoneUri = null;
if (SILENT_RINGTONE.equals(value)) {
ringtoneUri = null;
} else {
Uri canonicalUri = Uri.parse(value);
ringtoneUri = mContext.getContentResolver().uncanonicalize(canonicalUri);
if (ringtoneUri == null) {
// Unrecognized or invalid Uri, don't restore
return;
}
}
final int ringtoneType = Settings.System.RINGTONE.equals(name)
? RingtoneManager.TYPE_RINGTONE : RingtoneManager.TYPE_NOTIFICATION;
RingtoneManager.setActualDefaultRingtoneUri(mContext, ringtoneType, ringtoneUri);
}
private void setAsRingtone(final Activity context, int position) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.System.canWrite(context)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + context.getPackageName()));
context.startActivity(intent);
} else {
List<musicInfo> list = MyApplication.getDatesublist();
File music = new File(list.get(position).getMusicData()); // path is a file to /sdcard/media/ringtone
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, music.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, list.get(position).getMusicTitle());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, list.get(position).getMusicArtist());
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);
//Insert it into the database
Uri uri = MediaStore.Audio.Media.getContentUriForPath(music.getAbsolutePath());
context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + music.getAbsolutePath() + "\"", null);
Uri newUri = context.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
Toast.makeText(context, "已成功设置为来电铃声", Toast.LENGTH_SHORT).show();
//Snackbar
// Snackbar.make(rootview, "已成功设置为来电铃声", Snackbar.LENGTH_LONG).setAction("好的", new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// }
// }).show();
}
}
private void setAsRingtone(final Activity context, int position) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.System.canWrite(context)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + context.getPackageName()));
context.startActivity(intent);
} else {
// List<musicInfo> list = MyApplication.getMusicInfoArrayList();
File music = new File(musicInfoArrayList.get(position).getMusicData()); // path is a file to /sdcard/media/ringtone
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, music.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, musicInfoArrayList.get(position).getMusicTitle());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, musicInfoArrayList.get(position).getMusicArtist());
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);
//Insert it into the database
Uri uri = MediaStore.Audio.Media.getContentUriForPath(music.getAbsolutePath());
context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + music.getAbsolutePath() + "\"", null);
Uri newUri = context.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
Toast.makeText(context, "已成功设置为来电铃声", Toast.LENGTH_SHORT).show();
// //Snackbar
// Snackbar.make(rootview, "已成功设置为来电铃声", Snackbar.LENGTH_LONG).setAction("好的", new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// }
// }).show();
}
}
private void setAsRingtone(final Activity context, int position) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.System.canWrite(context)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + context.getPackageName()));
context.startActivity(intent);
} else {
// List<musicInfo> list = MyApplication.getMusicInfoArrayList();
File music = new File(musicInfoArrayList.get(position).getMusicData()); // path is a file to /sdcard/media/ringtone
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, music.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, musicInfoArrayList.get(position).getMusicTitle());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, musicInfoArrayList.get(position).getMusicArtist());
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);
//Insert it into the database
Uri uri = MediaStore.Audio.Media.getContentUriForPath(music.getAbsolutePath());
context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + music.getAbsolutePath() + "\"", null);
Uri newUri = context.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
//Snackbar
Snackbar.make(rootview, "已成功设置为来电铃声", Snackbar.LENGTH_LONG).setAction("好的", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}).show();
}
}
private void setAsRingtone(final Activity context, int position) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.System.canWrite(context)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + context.getPackageName()));
context.startActivity(intent);
} else {
List<musicInfo> list = MyApplication.getTimessublist();
File music = new File(list.get(position).getMusicData()); // path is a file to /sdcard/media/ringtone
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, music.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, list.get(position).getMusicTitle());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, list.get(position).getMusicArtist());
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);
//Insert it into the database
Uri uri = MediaStore.Audio.Media.getContentUriForPath(music.getAbsolutePath());
context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + music.getAbsolutePath() + "\"", null);
Uri newUri = context.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
Toast.makeText(context, "已成功设置为来电铃声", Toast.LENGTH_SHORT).show();
//Snackbar
// Snackbar.make(rootview, "已成功设置为来电铃声", Snackbar.LENGTH_LONG).setAction("好的", new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// }
// }).show();
}
}
public static void setRingtone(Context context,Track track)
{
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, track.getPath());
values.put(MediaStore.MediaColumns.TITLE, track.getTitle());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
values.put(MediaStore.Audio.Media.ARTIST, track.getArtist());
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, true);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(track.getPath());
if (context.getContentResolver() == null)
{
Toast.makeText(context, context.getString(R.string.set_as_ringtone_error), Toast.LENGTH_SHORT).show();
return;
}
context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + track.getPath() + "\"", null);
Uri newUri = context.getContentResolver().insert(uri, values);
if (newUri == null) {
Toast.makeText(context, context.getString(R.string.set_as_ringtone_error), Toast.LENGTH_SHORT).show();
} else {
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
Toast.makeText(context,context.getString(R.string.set_as_ringtone),Toast.LENGTH_SHORT).show();
}
}
/**
* 设置铃声
*/
public static void setRing(Context context, int audioId) {
try {
ContentValues cv = new ContentValues();
cv.put(MediaStore.Audio.Media.IS_RINGTONE, true);
cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
cv.put(MediaStore.Audio.Media.IS_ALARM, false);
cv.put(MediaStore.Audio.Media.IS_MUSIC, true);
// 把需要设为铃声的歌曲更新铃声库
if (mContext.getContentResolver().update(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, cv,
MediaStore.MediaColumns._ID + "=?", new String[]{audioId + ""}) > 0) {
Uri newUri = ContentUris
.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, audioId);
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
ToastUtil.show(context, R.string.set_ringtone_success);
} else {
ToastUtil.show(context, R.string.set_ringtone_error);
}
} catch (Exception e) {
//没有权限
if (e instanceof SecurityException) {
ToastUtil.show(context, R.string.please_give_write_settings_permission);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.System.canWrite(mContext)) {
Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + mContext.getPackageName()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Util.isIntentAvailable(mContext, intent)) {
mContext.startActivity(intent);
}
}
}
}
}
}
public static void setting(Context context) {
// 外部调用者传来的context
mContext = context;
// 设置歌曲路径
File filePath = new File(mUrl);
ContentValues values = new ContentValues();
// The data stream for the file
values.put(MediaStore.MediaColumns.DATA, filePath.getAbsolutePath());
// The title of the content
values.put(MediaStore.MediaColumns.TITLE, filePath.getName());
// The MIME type of the file
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
// values.put(MediaStore.Audio.Media.ARTIST, "Madonna");
// values.put(MediaStore.Audio.Media.DURATION, 230);
// 来电铃声
// 第二个参数若是true则会在铃音库中显示
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);
// Insert it into the database
Uri uri = MediaStore.Audio.Media.getContentUriForPath(filePath
.getAbsolutePath());
// 下面这一句很重要
mContext.getContentResolver().delete(
uri,
MediaStore.MediaColumns.DATA + "=\""
+ filePath.getAbsolutePath() + "\"", null);
Uri newUri = mContext.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(mContext,
RingtoneManager.TYPE_RINGTONE, newUri);
}
private void setRingtone () {
Song song = PlayManager.getInstance(this).getCurrentSong();
if (song != null) {
RingtoneManager.setActualDefaultRingtoneUri(
this,
RingtoneManager.TYPE_RINGTONE,
Uri.fromFile(new File(song.getPath())));
}
}
public static void setRingtone(Context context, ClsTrack track) {
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, track.getPath());
values.put(MediaStore.MediaColumns.TITLE, track.getTitle());
//values.put(MediaStore.MediaColumns.SIZE, 1024*1024);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
values.put(MediaStore.Audio.Media.ARTIST, track.getArtist());
//values.put(MediaStore.Audio.Media.DURATION, 5000);
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, true);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(track.getPath());
if (uri == null || context.getContentResolver() == null) {
Toast.makeText(context, context.getString(R.string.error), Toast.LENGTH_SHORT).show();
return;
}
/*String ringTonePath = uri.toString();
try {
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, uri);
} catch (Exception e) {
Toast.makeText(context, context.getString(R.string.error)+e.toString(), Toast.LENGTH_SHORT).show();
}*/
//TODO check this may be better copy file in ringtone dir before?
context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + track.getPath() + "\"", null);
Uri newUri = context.getContentResolver().insert(uri, values);
if (newUri == null) {
Toast.makeText(context, context.getString(R.string.error), Toast.LENGTH_SHORT).show();
} else {
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
Toast.makeText(context, context.getString(R.string.set_as_ringtone), Toast.LENGTH_SHORT).show();
}
}
/**
* Here we must copy the recording to be set as a ringtone into the user's
* /Ringtones folder, and then create the MediaStore entry so that we can
* proceed to set it as the user's default ringtone.
*/
public void setRingtone() {
String path = Environment.getExternalStorageDirectory().toString()
+ "/Ringtones";
File k = new File(path, "CircleSynthRing.wav");
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "CircleSynthRingtone");
values.put(MediaStore.MediaColumns.SIZE, k.length());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/vnd.wave");
values.put(MediaStore.Audio.Media.ARTIST, "CircleSynth");
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);
System.out.println("getting the right file "
+ String.valueOf(k.length()));
// Insert it into the database
Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.toString());
// delete previous entries - do this to avoid duplicate entries of the
// same name
getContentResolver().delete(
uri,
MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath()
+ "\"", null);
System.out.println("file in question " + k.getAbsolutePath());
// insert new values into the DB
Uri newUri = this.getContentResolver().insert(uri, values);
// set as default ringtone
try {
RingtoneManager.setActualDefaultRingtoneUri(getBaseContext(),
RingtoneManager.TYPE_RINGTONE, newUri);
} catch (Throwable t) {
Log.d(TAG, "catch exception");
System.out.println("ringtone set exception " + t.getMessage());
}
}
/**
* Sets default ringtone.
* @param rawSoundId
* @param ctx
*/
public static void setRawSoundRingTone(int rawSoundId, Context ctx) {
Uri path = Uri.parse("android.resource://" + ctx.getPackageName() + "/raw/" + rawSoundId);
RingtoneManager.setActualDefaultRingtoneUri(ctx, RingtoneManager.TYPE_RINGTONE, path);
RingtoneManager.getRingtone(ctx, path).play();
}
/**
* Sets default ringtone.
* @param rawSoundId
* @param ctx
*/
public static void setRawSoundRingTone(int rawSoundId, Context ctx) {
Uri path = Uri.parse("android.resource://" + ctx.getPackageName() + "/raw/" + rawSoundId);
RingtoneManager.setActualDefaultRingtoneUri(ctx, RingtoneManager.TYPE_RINGTONE, path);
RingtoneManager.getRingtone(ctx, path).play();
}
@RequiresPermission(android.Manifest.permission.WRITE_SETTINGS)
public static void setRingtone(MediaWrapper song, Context context){
File newringtone = AndroidUtil.UriToFile(song.getUri());
if(newringtone == null || !newringtone.exists()) {
Toast.makeText(context.getApplicationContext(),context.getString(R.string.ringtone_error), Toast.LENGTH_SHORT).show();
return;
}
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, newringtone.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, song.getTitle());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
values.put(MediaStore.Audio.Media.ARTIST, song.getArtist());
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(newringtone.getAbsolutePath());
Uri newUri;
try {
context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + newringtone.getAbsolutePath() + "\"", null);
newUri = context.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(
context.getApplicationContext(),
RingtoneManager.TYPE_RINGTONE,
newUri
);
} catch(Exception e) {
Toast.makeText(context.getApplicationContext(),
context.getString(R.string.ringtone_error),
Toast.LENGTH_SHORT).show();
return;
}
Toast.makeText(
context.getApplicationContext(),
context.getString(R.string.ringtone_set, song.getTitle()),
Toast.LENGTH_SHORT)
.show();
}
private static void setRingHasPermission(Activity context, int type, String path) {
Uri oldRingtoneUri = RingtoneManager.getActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE); //系统当前 通知铃声
Uri oldNotification = RingtoneManager.getActualDefaultRingtoneUri(context, RingtoneManager.TYPE_NOTIFICATION); //系统当前 通知铃声
Uri oldAlarm = RingtoneManager.getActualDefaultRingtoneUri(context, RingtoneManager.TYPE_ALARM); //系统当前 闹钟铃声
File sdfile = new File(path);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
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);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(sdfile.getAbsolutePath());
Uri newUri = null;
String deleteId = "";
try {
Cursor cursor = context.getContentResolver().query(uri, null, MediaStore.MediaColumns.DATA + "=?", new String[]{path}, null);
if (cursor.moveToFirst()) {
deleteId = cursor.getString(cursor.getColumnIndex("_id"));
}
Logger.d(" + deleteId" + deleteId);
context.getContentResolver().delete(uri,
MediaStore.MediaColumns.DATA + "=\"" + sdfile.getAbsolutePath() + "\"", null);
newUri = context.getContentResolver().insert(uri, values);
} catch (Exception e) {
e.printStackTrace();
}
if (newUri != null) {
String ringStoneId = "";
String notificationId = "";
String alarmId = "";
if (null != oldRingtoneUri) {
ringStoneId = oldRingtoneUri.getLastPathSegment();
}
if (null != oldNotification) {
notificationId = oldNotification.getLastPathSegment();
}
if (null != oldAlarm) {
alarmId = oldAlarm.getLastPathSegment();
}
Uri setRingStoneUri;
Uri setNotificationUri;
Uri setAlarmUri;
if (type == RingtoneManager.TYPE_RINGTONE || ringStoneId.equals(deleteId)) {
setRingStoneUri = newUri;
} else {
setRingStoneUri = oldRingtoneUri;
}
if (type == RingtoneManager.TYPE_NOTIFICATION || notificationId.equals(deleteId)) {
setNotificationUri = newUri;
} else {
setNotificationUri = oldNotification;
}
if (type == RingtoneManager.TYPE_ALARM || alarmId.equals(deleteId)) {
setAlarmUri = newUri;
} else {
setAlarmUri = oldAlarm;
}
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, setRingStoneUri);
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_NOTIFICATION, setNotificationUri);
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_ALARM, setAlarmUri);
switch (type) {
case RingtoneManager.TYPE_RINGTONE:
Toast.makeText(context.getApplicationContext(), "设置来电铃声成功!", Toast.LENGTH_SHORT).show();
break;
case RingtoneManager.TYPE_NOTIFICATION:
Toast.makeText(context.getApplicationContext(), "设置通知铃声成功!", Toast.LENGTH_SHORT).show();
break;
case RingtoneManager.TYPE_ALARM:
Toast.makeText(context.getApplicationContext(), "设置闹钟铃声成功!", Toast.LENGTH_SHORT).show();
break;
}
}
}