在做定制需求的时候,需要修改系统通知的声音,将其禁用掉,避免第三方应用发送通知时,声音很大,吓着用户。索性就把通知声音关掉。下面就说说关闭声音的几种方法,以及修改系统默认声音的方法。

1. 直接修改系统层默认的声音大小

在系统代码 frameworks/base/media/java/android/media/AudioService.java 的开头定义了两个数组,一个 MAX_STREAM_VOLUME 这里面定义了各种声音的最大值( 最大值不是100 ,所以需要 AudioManager.getStreamMaxVolume(type) 来获取各个音量的最大值),然后进行设置。

还定义了一个数组 DEFAULT_STREAM_VOLUME 这里面则和 MAX_STREAM_VOLUME 里定义的顺序是一样,表明了各种声音的默认的大小。此块代码如下:

/** @hide Maximum volume index values for audio streams */private static int[] MAX_STREAM_VOLUME = new int[] {5,  // STREAM_VOICE_CALL7,  // STREAM_SYSTEMX_STREAM_VOLUMEMAX_STREAM_VOLUMEMAX_STREAM_VOLUME7,  // STREAM_RING15, // STREAM_MUSIC7,  // STREAM_ALARM7,  // STREAM_NOTIFICATION15, // STREAM_BLUETOOTH_SCO7,  // STREAM_SYSTEM_ENFORCED15, // STREAM_DTMF15  // STREAM_TTS};private static int[] DEFAULT_STREAM_VOLUME = new int[] {4,  // STREAM_VOICE_CALL7,  // STREAM_SYSTEM5,  // STREAM_RING11, // STREAM_MUSIC6,  // STREAM_ALARM5,  // STREAM_NOTIFICATION7,  // STREAM_BLUETOOTH_SCO7,  // STREAM_SYSTEM_ENFORCED11, // STREAM_DTMF11  // STREAM_TTS};

如果我们需要修改默认的通知声音,则可以将 STREAM_NOTIFICATION 前面的数值 5 给为 0即可,这样默认声音就为0 了。

2. 修改数据库中的通知声音值

媒体声音这些数据在数据库中都会默认的存放数据,我们知道大多数的数据都是系统初次启动的时候在 SettingProvider 应用中加载初始化的值,当然通知的声音也在里面。

具体的代码在 frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java 其中有个方法 loadVolumeLevels(db) 此方法则是加载所有默认声音大小的地方,具体代码如下:

stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" + " VALUES(?,?);");loadSetting(stmt, Settings.System.VOLUME_MUSIC,     AudioService.getDefaultStreamVolume(AudioManager.STREAM_MUSIC));loadSetting(stmt, Settings.System.VOLUME_RING,          AudioService.getDefaultStreamVolume(AudioManager.STREAM_RING));loadSetting(stmt, Settings.System.VOLUME_SYSTEM,        AudioService.getDefaultStreamVolume(AudioManager.STREAM_SYSTEM));loadSetting(stmt,Settings.System.VOLUME_VOICE,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_VOICE_CALL));loadSetting(stmt, Settings.System.VOLUME_ALARM,         AudioService.getDefaultStreamVolume(AudioManager.STREAM_ALARM));loadSetting(stmt,Settings.System.VOLUME_NOTIFICATION,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_NOTIFICATION));loadSetting(stmt,Settings.System.VOLUME_BLUETOOTH_SCO,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO));

我们发现loadSetting中把所有声音相关默认值大小的都写入数据库中了,那么我们就可以从这里下手了,在 Settings.System.VOLUME_NOTIFICATION 的设置项中我们就把他设置为0,则系统通知默认的声音就为0 ,我们再看看 AudioService.getDefaultStreamVolume 这个方法的实现.

public static int getDefaultStreamVolume(int streamType) {return DEFAULT_STREAM_VOLUME[streamType];
}

实际就是返回了我们在方案一中系统里面默认音量大小数组里面的值。所以方案一和方案二实际是一个效果

3. 修改ro.config.notification_sound的属性值

此属性值的意思就是通知默认的音乐文件文件名,我们在系统代码 build/target/product/full_base.mk 中定义了,如果我们不想有声音那么我们可以将默认值改为不存在的文件,则不会播放通知声音了,当然我们也可以在客户定义的mk中使用 PRODUCT_PROPERTY_OVERRIDES 去复写此属性,将其指定为不存在文件或者为空,这样就不会有通知声音响了。

4. 修改默认的声音

系统默认了很多的声音,那么我们要修改一些系统里默认的音效文件呢,那么我们可以修改 frameworks/base/data/sounds 下面文件及文件夹中的声音文件,如果改了名字记得要在mk中将原来的替换为新的名字。这下面的mk的作用是将这些音乐文件全部打包到系统 system/media/audio 下面各个模块的文件,然后在系统开机的时候,扫描这些文件,将其加入到数据库中,之后在设置中更换声音时,则直接从数据库中查询这些音乐文件,然后供用户选择。

总结

系统的媒体这块是很重也很大的一块,这里只是一点点皮毛,只是用到时查到的,要想系统系统学习还得很多工作需要研究。如有问题请及时留言反馈。

Android默认系统声音/大小修改及配置相关推荐

  1. 传奇服务器是测试模式怎么修改,www.23bb.net告诉你传奇服务端中默认系统提示文字修改方法...

    在玩传奇中中,常见一些系统提示,如人物在安全区中扔东西时,会弹出对话框提示禁止扔,或者在游戏登陆时提示攻击模式,及人物行会显示与夫妻称号显示格式等所有的系统默认格式.其实这些格式都是可以进行修改的,今 ...

  2. android 默认中文时区,修改android默认系统语言为中文和时区

    原始的android代码,系统默认语言是英文,一般来说需要改成默认中文,修改的方法很多: 1.修改PRODUCT_LOCALES字段, 将要选择的语言放在第一位,如: PRODUCT_LOCALES ...

  3. Android 默认Tab标签大小及间距修改

    一般来说,我都是用Android默认的Tab,但此时Android会根据你增加的Tab页面平均分配Tab标签,假如你只有两个Tab,那么长度将会很长,并且其高度略微过高,并不好看,网上解决这个问题有些 ...

  4. 关于Android切换系统字体大小和字体样式导致App崩溃或者界面错乱的问题

    一.发现问题 问题:最近公司测试同学,在无意间调整系统字体大小的之后把app从后台切换到前台,发现app crash. 查阅了一些资料,发现在app中文字标注的单位为sp.当系统字体大小发生变化的时候 ...

  5. 改Android app字体,Android APP自定义字体大小修改

    简单记录下今天做的自定义字体大小修改的功能 需求:添加具体字体自定义大小功能.不需要跟随系统字体大小改变而改变 1.首先看一下用到的调节字体大小的控件: 字体大小调节页 控件继承自系统的SeekBar ...

  6. android左右耳机声音大小不一样,AirPods左右两边声音大小不同怎么办 单侧无声和两侧音量不同解决方法...

    AirPods连接 iPhone 后如果出现了左右两边声音大小不一样,或者单侧无声的问题,可能是软件导致的暂时性故障,也有可能是硬件问题.当耳机音量出现异常时,可以通过以下几种方式尝试恢复. 单侧无声 ...

  7. android 声音大小修改器,吃鸡音效修改器游戏

    吃鸡音效修改器游戏里面有很多的声音,你可以把你喜欢的那些声音收藏起来,在这里你如果是个男生的话可以用语音包把自己的声音变成女生,这样就会有很多的小哥哥来给你送装备了,这样体验起来真的是非常的有趣. 吃 ...

  8. dubbo默认数据包大小修改

    dubbo报错 cause: Data length too large: 26304917, max payload: 8388608, channel: NettyChannel 因为dubbo每 ...

  9. Android新机系统要求,原神手机配置要求多少 手机配置要求说明

    手机配置要求说明 >>>预计包体大小 移动端 8 G左右 PS4设备 12 G左右(请预留足够的下载时间) >>>预留存储空间 移动端设备请预留 8 GB以上磁盘空 ...

最新文章

  1. php mysql技术笔试题_PHP面试笔试题--选择题部分(最新整理)
  2. HDU2544最短路---(Dijkstra)
  3. 关于格雷码的规律、转换
  4. 序列化与反序列化_序列化和反序列化JAVA成长之路
  5. 零基础不建议学前端_web前端开发零基础怎样入门-哈尔滨前端学习
  6. Beetlex之tcp/tls服务压测工具
  7. 「软件项目管理」一文详解软件项目质量计划
  8. postgresql 并发访问_PostgreSQL并发控制(显式锁定)
  9. C# ReportViewer 绑定数据源
  10. jsp是在html里面嵌入哪种代码?_再说嵌入式入门
  11. C++ std::lock_guard 自动加锁、释放锁 原理
  12. Linux常用工具包安装
  13. 怀念张孝祥,张老师一路走好
  14. CentOS 6.8 Local time zone must be set--see zic manual page
  15. Android 仿微信语音识别
  16. uniapp 视频video 播放 白屏 android
  17. 用计算机输入文字语音播放出来,Win10如何实现电脑语音输入?Win10使用搜狗输入法语音输入文字的方法...
  18. 电商环境下中小企业客户关系管理系统设计
  19. svm兵王_飞彩网福利彩
  20. 安徽省省二c语言题库及答案,07_06省二级选择题题库C语言(含答案)

热门文章

  1. matlab特效实现,matlab 使用 实现三维建模源码,效果非常好,可以用于 点云数据的 262万源代码下载- www.pudn.com...
  2. Cisco(28)——动态NAT
  3. JAVA中序列化的作用以及好处
  4. angular:ng-template 使用ngif和ngifelse
  5. level2通信达接口的优缺点是什么?
  6. java 强制下线_JavaWeb之实现账号强制下线功能
  7. 试验数字化平台-WDP
  8. python pyc文件是啥_Python的.pyc文件是什么
  9. 程考网:一建有哪些具体备考方法?
  10. 2022年1月11日第四天