android系统默认铃声,Android系统修改默认铃声
Andriod手机的铃声默认保存在system/media/audio/下面,有四个文件夹,分别是alarms,notifications,ringtones,ui。对应闹钟、通知、铃声、UI音效。root的手机可以直接替换修改相应目录下的文件来修改铃声。那这些声音是从哪里来的呢。由于需要修改默认的铃声,就读了一下源码,这里进行记录一下。
在源码中,这些文件保存在frameworks\base\data\sounds目录下面,通过修改相应的mk文件把这些声音文件放到手机的相应目录。手机启动后会调用媒体库对手机内外存储上的多媒体文件进行扫描,保存其URI到媒体库的数据库中。当设置铃声时,会调用媒体库的(mediaProvider)RingtonePickerActivity进行设置。这里铃声Uri保存在数据库中,通过媒体库扫描出来显示个列表供选择。默认铃声的URI保存在设置(Settings)的数据库中,在表system里面。
修改默认铃声
修改mk文件,ro.config.ringtone对应手机默认铃声,ro.config.alarm_alert对应闹钟默认闹铃,ro.config.notification_sound设置通知默认响铃。我这里修改的是/build/target/product/full_base.mk,编译的时候这些值会被编到 build.prop内。
PRODUCT_PROPERTY_OVERRIDES := \
ro.config.ringtone=yami_style1.ogg \
ro.config.alarm_alert=Alarm_Rooster_02.ogg \
ro.config.notification_sound=yami_notification.ogg
在MediaScanner.java中读取并保存配置到设置里面。
private static final String DEFAULT_RINGTONE_PROPERTY_PREFIX ="ro.config.";
private void setDefaultRingtoneFileNames() {
mDefaultRingtoneFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
+ Settings.System.RINGTONE);
mDefaultNotificationFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
+ Settings.System.NOTIFICATION_SOUND);
mDefaultAlarmAlertFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
+ Settings.System.ALARM_ALERT);
}
...
if (TextUtils.isEmpty(mDefaultRingtoneFilename) ||
doesPathHaveFilename(entry.mPath, mDefaultRingtoneFilename)) {
needToSetSettings = true;
}
...
if(needToSetSettings) { if (notifications) { setSettingIfNotSet(Settings.System.NOTIFICATION_SOUND, tableUri, rowId); mDefaultNotificationSet = true; } else if (ringtones) { setSettingIfNotSet(Settings.System.RINGTONE, tableUri, rowId); if (MSimTelephonyManager.getDefault().isMultiSimEnabled()) { // Set the setting to the given URI for RINGTONE_2 setSettingIfNotSet(Settings.System.RINGTONE_2, tableUri, rowId); } mDefaultRingtoneSet = true; } else if (alarms) { setSettingIfNotSet(Settings.System.ALARM_ALERT, tableUri, rowId); mDefaultAlarmSet = true; } } 这里看到写入了数据库中。
android系统默认铃声,Android系统修改默认铃声相关推荐
- 设置mysql默认字符集_MySQL之修改默认引擎和字符集
一.数据库引擎 1.1 查看数据库引擎 mysql> show engines; +--------------------+---------+------------------------ ...
- mac永久更换php默认版本,mac如何修改默认php
mac修改默认php的方法:首先新建一个".bas_profile"文件并编辑:然后在该文件中输入自己想要的php版本:接着通过"source ~/.bash_profi ...
- 计算机更改默认设置,电脑怎么修改默认打开程序 Win7设置默认打开程序方法详解...
在使用电脑的时候,我们经常会遇到这样的情况,当电脑中安装有多个浏览器.播放器时,总有一些软件会修改我们的默认打开程序,比如安装搜狗浏览器后,以后打开网页总是默认以搜狗浏览器打开,而之前的默认IE浏览器 ...
- linux 默认启动内核,ubuntu修改默认启动内核
一.序言 新换的笔记本由于太新的主板芯片,驱动还没有完善.每次升级系统内核都要小心谨慎.经常发生部分硬件驱动失败的事情. 系统Ubuntu 20.04.2 LTS x86_64 ,我现在使用的两个版本 ...
- vscode设置默认新建html,VScode修改默认生成的HTML模板的方法
在VScode中,新建HTML页面时可以输入!+tab键,快速生成HTML代码模板,默认生成的代码模板如下: Document 由于生成的代码模板中有一些不需要,所以每次生成后都需要删除,很麻烦.其实 ...
- php默认日志位置,Laravel 修改默认日志文件名称和位置的例子
修改默认日志位置 我们平常的开发中可能一直把laravel的日志文件放在默认位置不会有什么影响,但如果我们的项目上线时是全量部署,每次部署都是git中最新的代码,那这个时候每次都会清空我们的日志,显示 ...
- 修改app的默认设置(包括修改默认launcher)
1.改为自己的launcher ComponentName component = new ComponentName( context.getPackageName(), MainActivity. ...
- linux默认网关文件,Linux修改默认网关
stawang 于 2009-08-07 21:46:26发表: 楼上的正解! youth3008 于 2009-08-07 21:42:28发表: [i=s] 本帖最后由 youth3008 于 2 ...
- mysql 5.6 修改默认字符集_mysql5.6修改默认字符集
1.修改前mysql> show variables like 'char%'; +--------------------------+---------------------------- ...
- centos7网口添加IP,修改默认路由永久地址生效
1永久增加ip地址和路由 网卡永久添加ip地址 注释:ens192为管理地址网卡,请根据实际情况进行修改,网关以192.168.160.1为例 复制一份网卡配置文件命名为ifcfg-ens192:1 ...
最新文章
- JavaScript对象,方括号和算法
- RegExp 正则
- opencv findContours 崩溃CrtDbgBreak
- C语言二级指针与典型应用(1)
- [转载]Ubuntu安装配置Mysql
- Bootstrap3基础 下载bootstrap3压缩包和相应的jQuery文件
- cfdiv2/c/找规律
- linux导出mysql下ssl证书_Linux系统下生成证书 https证书
- Flink ProcessFunction 介绍使用
- 软件包管理:源码包管理-源码包与RPM包的区别
- vc mysql free result_VC的MySQL编程
- 解决Debug certificate expired的问题 - 转
- 使用WndProc来处理消息
- 常见问题-瑞友天翼应用虚拟化系统安装之前需要做什么准备
- tcs标准编写软件_tcs 2010软件下载
- 树莓派-13-红外遥控器HX1838
- 角色和武器Shader特效开发
- Word文档如何在方框里打勾?三招让你从入门到精通,工作效率翻倍
- OpenCV图像滤镜操作-模糊
- 上海各IT培训机构深度比较
热门文章
- java content()_理解content(一)
- python简易爬虫课程设计_python实现简单爬虫功能的示例
- Java架构-面试前必须知道的MySQL命令【explain】
- 高通的专利霸权要到头了?
- 【Origin】晨起忆梦
- JS动态生成的元素,其对应的方法不响应(比如单击事件,鼠标移动事件等)...
- 【Go语言】【14】GO语言的接口类型
- linux下rpm包和命令使用简介
- OC基础数据类型-NSData-NSMutableData-NSString
- nginx处理web请求分析