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系统修改默认铃声相关推荐

  1. Android系统修改默认语言为中文

    Android系统修改默认语言为中文 对于Android系统修改默认语言的方法,各个版本的系统方法都差不多一致,至少我在Android5.1和Android9.0使用都成功,具体方法如下: 在buil ...

  2. 计算机必须设置默认打印机,电脑系统怎么默认打印机 默认打印机的设置教程...

    打印机是每个办公室的常用设备之一,我们可以通过打印机将电脑中的重要文件打印出来,常见的比如人员表.个人简历.入职资料等等,如果我们想要将电脑系统中的文件打印出来呢?那么我们就需要在系统中设置默认打印机 ...

  3. win7系统 修改默认管理员用户名administrator方法

    win7系统 修改默认管理员用户名administrator方法

  4. android系统默认铃声,Android系统修改默认铃声

    Andriod手机的铃声默认保存在system/media/audio/下面,有四个文件夹,分别是alarms,notifications,ringtones,ui.对应闹钟.通知.铃声.UI音效.r ...

  5. android7.0输入法切换,7.0 Android系统修改默认输入法后,切换系统语言时输入法自动切到AOSP的解决办法...

    Android 7.0设置默认输入法参考下面的文章 Android修改默认输入法 切换系统语言之后,系统会默认将输入法切换到Andorid Keyboard(AOSP) /frameworks/bas ...

  6. android设置主题的方法,Android_修改Android App样式风格的方法,android中可以自定义主题和风格 - phpStudy...

    修改Android App样式风格的方法 android中可以自定义主题和风格.风格,也就是style,我们可以将一些统一的属性拿出来,比方说,长,宽,字体大小,字体颜色等等.可以在res/value ...

  7. 设置mysql默认字符集_MySQL之修改默认引擎和字符集

    一.数据库引擎 1.1 查看数据库引擎 mysql> show engines; +--------------------+---------+------------------------ ...

  8. Windows10、centos7双系统修改默认启动引导选项

    目录 本文内容说明 本文撰文环境 理解要点 参考连接 正文开始 引言 一.查看/boot/efi/EFI/centos/grub.cfg文件(文末配有文件脚本) 二.修改默认启动选项 三.重启系统(重 ...

  9. Windows+Ubuntu双系统修改默认开机系统

    文章目录 前言 更改/etc/default/grub文件 保存更新 补充 总结 前言 就目前的形式来看,Windows还是主流的操作系统,而对于需要用到Linux开发的朋友们会选择安装虚拟机(比如V ...

最新文章

  1. day03-字符编码与转换
  2. NOIP2018 集训(一)
  3. 12月27日云栖精选夜读:实人认证 - 阿里云实人认证(公测)发布
  4. event loop那些事儿
  5. Gradle教程Part2:java工程
  6. php 未定义数组索引_如何删除PHP数组元素键值并重新排序
  7. MAC上使用不同版本的xcode编译
  8. 仿大众点评下拉菜单完成
  9. 谷歌邮箱lmap服务器填什么_Gmail/QQ邮箱/163邮箱等各大邮箱IMAP/SMTP/POP3地址
  10. 4. HTML 视频
  11. zbbix服务器搭建_Linux系统搭建Zabbix监控服务器
  12. 五大车载操作(VOS)系统优劣对比,车载系统架构分析-QNX系统性能分析
  13. java测试工程师培训,看这一篇就够了
  14. 计算机管理上移动硬盘显示其他设备,win7系统拔出移动硬盘提示“该设备正在使用”怎么处理...
  15. 根据.mdf、.ndf和.ldf文件恢复数据库数据
  16. redis的nodejs客户端ioredis初识
  17. 知否:高增长时代已过,汽车互联网玩家如何开拓更多增量?
  18. 《中国企业家》杂志:卫哲第二道伤疤
  19. Ribbon使用方法
  20. 独创:几十行纯php代码解密goto加密的php单文件[仅供学习]

热门文章

  1. 直播 | COLING 2020 论文解读:基于话题引导的对话推荐系统
  2. 基于深度学习的多目标跟踪算法——ReID与MOT的联系
  3. 实习推荐 | 腾讯AI Lab虚拟人中心招聘算法工程师实习生
  4. 智源-知乎联合发布大规模用户关系数据集,同步开启10万元竞赛
  5. 头部数据人才24小时图鉴
  6. 从“猿”到“金刚”,机器学习让你在职业生涯超进化!
  7. 高效CNN推理库、多款AlphaGo实现…你们喜欢的Github项目精选又来了!
  8. python 类继承和组合_python3--类与继承和组合
  9. MySQL【环境搭建 03】腾讯云 Linux 环境踩坑 loading shared libraries: libnuma.so.1 + quit without updating PID file
  10. MySQL和PGSQL事务锁等待超时时间