android 来电默认铃声,android – 来电动态覆盖默认铃声
动态更改铃声有几个步骤.
准备铃声
File k = new File("/sdcard/ringtone", "kolyan_.mp3");
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "My Song title");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mpeg");
values.put(MediaStore.Audio.Media.ARTIST, "Some Artist");
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);
2.将其插入数据库
Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
// Line below is major because we need to delete old entry
getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath() + "\"", null);
mUri = getContentResolver().insert(uri, values);
3.保存当前的默认铃声并订阅CallListener
// Be careful by calling getActualDefaultRingtoneUri in CallListener, it could return null, better way to save it in OnCreate
mOldUri = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE);
TelephonyManager mTelephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
mTelephonyMgr.listen(new MyCallListener(), PhoneStateListener.LISTEN_CALL_STATE);
4.创建MyCallListener类
class MyCallListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
// On call you replace the ringtone with your own mUri
RingtoneManager.setActualDefaultRingtoneUri(
MainActivity.this,
RingtoneManager.TYPE_RINGTONE,
mUri
);
break;
case TelephonyManager.CALL_STATE_IDLE:
// Restore the default ringtone
RingtoneManager.setActualDefaultRingtoneUri(
MainActivity.this,
RingtoneManager.TYPE_RINGTONE,
mOldUri
);
break;
default:
break;
}
super.onCallStateChanged(state, incomingNumber);
}
}
5.向您安装AndroidManifest.xml的权限
完成
主要想法是挂接来电,用自己的方式取代铃声.当然,您应该在通话后将默认铃声恢复为保存的值.
android 来电默认铃声,android – 来电动态覆盖默认铃声相关推荐
- Android系统修改gmail和google日历默认铃声,区别于系统的默认通知音
需求: 单独修改gmail和google日历默认铃声,区别于系统的默认通知音 解决方法: 因为GMS包没有源码,所以无法通过修改apk的方法解决,只能修改获取默认铃声时的uri实现. 具体设计到的文件 ...
- android系统默认铃声,android播放系统默认的铃声
播放默认通知声音 /** * 播放系统默认提示音 * * @return MediaPlayer对象 * * @throws Exception */ public void defaultMedia ...
- Android5.1自定义闹钟铃声,Android 设置来电铃声、通知铃声、闹钟铃声中的坑
最新做项目,遇到一个铃声设置的bug,一直被延期了大半年,终于忍不住了,花了大半天时间来研究问题所在.其实这个功能百度一下有很多,但大部分都是同一篇文章,我们项目里最开始就是参考的百度的代码片段来实现 ...
- android java 怎么更换默认铃声,Android如何通过长按按钮将声音设置为铃声
如何长按按钮将声音设置为铃声? 目前它只适用于sound4但不适用于sound5 包com.test.soundboard; import java.io.File; import java.io.F ...
- android 来电过滤,Call Screening(来电过滤) on Android N
之前在看Android官方文档系统的时候看到Android N 一系列新增和改变的特性,因为工作中负责的部分和通话有关,就尤其注意到了这个Call Screening. 下面来简单介绍一下Call S ...
- android -- phone (三)来电流程
上一篇是去电流程,接下来自然是来电流程,按消息的接收顺序,我们关心来电消息最开始是从哪来的,所以先RIL层开始,这里如果有涉及AT命令,均以android源码所使用的AT命令为准(即 3gpp 27. ...
- android init.rc中启动的service 默认是disable的,后续如何启动此服务
如果 android init.rc中启动的service 默认是disable的,如何才能启动此服务呢? init.rc中可以直接启动service 附带的参数决定启动程序的状态,例如数据业务中配置 ...
- Android之ExpandableListView的各种效果(默认展开不合闭,自定义父栏目及箭头控制)
1. 设置ExpandableListView 默认是展开的: 先实例化exListView (ExpandableListView所有数据齐全后可用,否则报错) exListView.setAda ...
- android连接usb后默认app,android – 记住USB连接,但不要启动应用程序
我正在处理的应用程序通过USB连接成功连接设备. 但是,这会在连接USB设备时始终启动活动时产生不良影响.没有启动应用程序,我无法记住默认值.在连接上启动应用程序不是一个理想的效果.下面的小代码示例是 ...
- android 模拟来电广播,在Android模拟器上模拟来电
最近项目要做一个控制来电显示的Android 应用 需要在Emulator上模拟来电 效果 方法如下: 1.单个电话 打开命令行cmd,输入telnet 回车. 然后输入 o localhost 55 ...
最新文章
- java两个jre_为什么会有两个jre?060925(原创)
- 文件服务器在哪里靠谱,vps作为文件服务器靠谱吗
- svn cleanup失败
- 技术点不亲身实验一遍,难免会被网文唬
- Date Picker控件:
- uniapp 创建与配置 tabbar
- 数据分析--使用Web API(应用编程接口)以自动请求GitHub网站的特定信息为例爬取数据,附完整的Python代码详解
- 图片服务 - thumbor可用的探测器
- 武汉将投放5亿元消费券,4月19日微信率先开抢
- linux中 在文件中写入一句话怎么写_shell文件处理笔记之插入文本到文件的方法...
- [导入]给老家新楼的对联
- Python学习入门基础教程(learning Python)--4.3 Python的for嵌套
- php期末考试题机考_phP基础知识期末考试题.doc
- GCP+WORDPRESS建站。
- 问题 J: 爱吃榴莲的LZY
- BLE设备地址类型笔记
- oracle调优总结 本文转自:http://blog.csdn.net/wonth/article/details/1670366
- MySQL 使用SQL语句实现 增删改查
- JAVA代码计算1900年到所求年份共多少天。
- Visio21 、Endnote X9.1、Endnote20、Endnote21、Endnote22、Latex 22安装破解版