Android 代码设置来电铃声
1、如果读到的是音频文件路径,需要先将音乐文件插入到多媒体库。
- //设置--铃声的具体方法
- public void setMyRingtone(String path)
- {
- 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 = this.getContentResolver().insert(uri, values);
- RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);
- Toast.makeText( getApplicationContext (),"设置来电铃声成功!", Toast.LENGTH_SHORT ).show();
- System.out.println("setMyRingtone()-----铃声");
- }
- //设置--提示音的具体实现方法
- public void setMyNotification(String path)
- {
- 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, false);
- values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
- 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 = this.getContentResolver().insert(uri, values);
- RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, newUri);
- Toast.makeText( getApplicationContext (),"设置通知铃声成功!", Toast.LENGTH_SHORT ).show();
- System.out.println("setMyNOTIFICATION-----提示音");
- }
- //设置--闹铃音的具体实现方法
- public void setMyAlarm(String path)
- {
- 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, false);
- values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
- values.put(MediaStore.Audio.Media.IS_ALARM, true);
- values.put(MediaStore.Audio.Media.IS_MUSIC, false);
- Uri uri = MediaStore.Audio.Media.getContentUriForPath(sdfile.getAbsolutePath());
- Uri newUri = this.getContentResolver().insert(uri, values);
- RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM, newUri);
- Toast.makeText( getApplicationContext (),"设置闹钟铃声成功!", Toast.LENGTH_SHORT ).show();
- System.out.println("setMyNOTIFICATION------闹铃音");
- }
2、如果读取多媒体库的音频文件,设为铃声,使用以下方式:
首先写一个常量类(定义想要设置为那种铃声的标示):
- AppConstant.java
- public interface AppConstant {
- public static final int RINGTONE = 0; //铃声
- public static final int NOTIFICATION = 1; //通知音
- public static final int ALARM = 2; //闹钟
- public static final int ALL = 3; //所有声音
- }
此方法需要传入想要设置为铃声的全路径(如:/mnt/sdcard/mp3/a.mp3 ),和想要设置为那种铃声的标示:
- private void setVoice(String path2,int id)
- 2
- 3 {
- 4
- 5 ContentValues cv = new ContentValues();
- 6
- 7 Uri newUri = null;
- 8
- 9 Uri uri = MediaStore.Audio.Media.getContentUriForPath(path2);
- 10
- 11 // 查询音乐文件在媒体库是否存在
- 12
- 13 Cursor cursor = this.getContentResolver().query(uri, null, MediaStore.MediaColumns.DATA + "=?", new String[] { path2 },null);
- 14
- 15 if (cursor.moveToFirst() && cursor.getCount() > 0)
- 16
- 17 {
- 18
- 19 String _id = cursor.getString(0);
- 20
- 21 switch (id) {
- 22
- 23 case AppConstant.RINGTONE:
- 24
- 25 cv.put(MediaStore.Audio.Media.IS_RINGTONE, true);
- 26
- 27 cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
- 28
- 29 cv.put(MediaStore.Audio.Media.IS_ALARM, false);
- 30
- 31 cv.put(MediaStore.Audio.Media.IS_MUSIC, false);
- 32
- 33 break;
- 34
- 35 case AppConstant.NOTIFICATION:
- 36
- 37 cv.put(MediaStore.Audio.Media.IS_RINGTONE, false);
- 38
- 39 cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
- 40
- 41 cv.put(MediaStore.Audio.Media.IS_ALARM, false);
- 42
- 43 cv.put(MediaStore.Audio.Media.IS_MUSIC, false);
- 44
- 45 break;
- 46
- 47 case AppConstant.ALARM:
- 48
- 49 cv.put(MediaStore.Audio.Media.IS_RINGTONE, false);
- 50
- 51 cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
- 52
- 53 cv.put(MediaStore.Audio.Media.IS_ALARM, true);
- 54
- 55 cv.put(MediaStore.Audio.Media.IS_MUSIC, false);
- 56
- 57 break;
- 58
- 59 case AppConstant.ALL:
- 60
- 61 cv.put(MediaStore.Audio.Media.IS_RINGTONE, true);
- 62
- 63 cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
- 64
- 65 cv.put(MediaStore.Audio.Media.IS_ALARM, true);
- 66
- 67 cv.put(MediaStore.Audio.Media.IS_MUSIC, false);
- 68
- 69 break;
- 70
- 71
- 72
- 73 default:
- 74
- 75 break;
- 76
- 77 }
- 78
- 79
- 80
- 81 // 把需要设为铃声的歌曲更新铃声库
- 82
- 83 getContentResolver().update(uri, cv, MediaStore.MediaColumns.DATA + "=?",new String[] { path2 });
- 84
- 85 newUri = ContentUris.withAppendedId(uri, Long.valueOf(_id));
- 86
- 87
- 88
- 89 // 一下为关键代码:
- 90
- 91 switch (id) {
- 92
- 93 case AppConstant.RINGTONE:
- 94
- 95 RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);
- 96
- 97 break;
- 98
- 99 case AppConstant.NOTIFICATION:
- 100
- 101 RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, newUri);
- 102
- 103 break;
- 104
- 105 case AppConstant.ALARM:
- 106
- 107 RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM, newUri);
- 108
- 109 break;
- 110
- 111 case AppConstant.ALL:
- 112
- 113 RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALL, newUri);
- 114
- 115 break;
- 116
- 117
- 118
- 119 default:
- 120
- 121 break;
- 122
- 123 }
- 124
- 125
- 126
- 127 //播放铃声
- 129 // Ringtone rt = RingtoneManager.getRingtone(this, newUri);
- 131 // rt.play();
- 133 }
- 135 }
- 上一篇如何使用真机调试Android应用
- 下一篇java synchronized详解
- 顶
- 0
Android 代码设置来电铃声相关推荐
- Android5.1自定义闹钟铃声,Android 设置来电铃声、通知铃声、闹钟铃声中的坑
最新做项目,遇到一个铃声设置的bug,一直被延期了大半年,终于忍不住了,花了大半天时间来研究问题所在.其实这个功能百度一下有很多,但大部分都是同一篇文章,我们项目里最开始就是参考的百度的代码片段来实现 ...
- Android 设置来电铃声、通知铃声、闹钟铃声中的坑
最新做项目,遇到一个铃声设置的bug,一直被延期了大半年,终于忍不住了,花了大半天时间来研究问题所在.其实这个功能百度一下有很多,但大部分都是同一篇文章,我们项目里最开始就是参考的百度的代码片段来实现 ...
- android闹钟铃声编码,Android 设置来电铃声、通知铃声、闹钟铃声中的坑
最新做项目,遇到一个铃声设置的bug,一直被延期了大半年,终于忍不住了,花了大半天时间来研究问题所在.其实这个功能百度一下有很多,但大部分都是同一篇文章,我们项目里最开始就是参考的百度的代码片段来实现 ...
- android 铃声设置失败,无法通过Android代码设置铃声
我正在开发一个应用程序,它将随机设置用户已选择的铃声列表中的铃声.无法通过Android代码设置铃声 虽然我的代码适用于Android N及以上版本,但我遇到了Android M及以下版本的问题.我为 ...
- Android设置来电铃声和分享操作
之前项目里写的设置来电铃声和分享音频文件如下: //设置来电铃声public void setAsRingTone(String path) {Log.d(TAG, "setAsRingTo ...
- android 代码设置EditText的hint字符
今天,简单讲讲android里如何在代码里设置 EditText的hint字符. 之前,我一般是直接在xml文件设置EditText 的hint字符,后来需要在代码里修改hint字符,发现自己居 ...
- 苹果手机怎么设置来电铃声?4个步骤,快速学会
相信有不少的小伙伴使用的手机是苹果手机.苹果手机虽然好用,但是每次来电的铃声都太过吵闹,有的小伙伴想要换一个苹果手机的来电铃声,却不知道应该怎么设置.苹果手机怎么设置来电铃声?本篇文章,小编将会以图文 ...
- ym——Android从零开始(28)(来电铃声的设置、手机闹钟、手势识别)(新)
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 来电铃声的设置.手机闹钟.手势识别来电铃声的设置 MediaStore简介 Media ...
- android 代码设置 键盘适应_Android自适应软键盘的Dialog以及监听软键盘弹起
最近项目中遇到一个需求:新手引导.跟一般的新手引导没有什么太大区别,思路都是搞一个带阴影的遮罩层,然后在上边儿给一些提示性的文字,由于需求中有些特殊的地方,所以我用了一个全屏的dialog(而且,di ...
- android 代码设置圆角,Android中用Shape实现圆角和局部圆角
本文讲解如何实现布局边框的部分圆角 大家可能都知道圆角实现其实很简单, 在drawable文件夹下新建xml文件加入以下代码 情景1: 四个角均为圆角 android:shape="rect ...
最新文章
- C#学习笔记:多态与隐藏,覆盖
- 题解报告:hdu 5695 Gym Class(拓扑排序)
- Knative Serving 进阶: Knative Serving SDK
- NOIP2000提高组复赛C 单词接龙
- ant-design tree 设置默认选中状态_快速掌握文件夹位置的更改和文件的默认打开方式及重命名的操作...
- 得物App获得2020“年度新经济企业”奖项
- SpringMVC框架搭建的步骤
- 分布式版本控制工具 Git
- MFC DLL向导(二)
- 小米华为鸿蒙,华为鸿蒙比小米MIUI快,老外上手出结果
- matlab画图画点画直线
- vue element-plus 插件
- Android5.1下拉状态栏新增截屏功能
- 构建iOS持续集成平台
- java水平翻转矩阵_Java实现 LeetCode 519 随机翻转矩阵
- 微信支付服务商模式下的支付-特约商户-----亲试有效
- 2022年中国工业软件市场现状及发展前景预测分析
- 步道乐跑怎么刷公里_步道乐跑怎么刷?
- 关于“给PHP源代码加密“的代码分析
- mac 苹果如何才能实现剪切文件