平时将android系统的system volume调为0时,常常会发现其他几个种类的也会跟着mute,不能说是将其他的streamtype也调为0,因为当system volume大于0时,其他几个相关的volume value又恢复了,说明其他几个Stream只是被Mute住了,所以要增加或者取消这种Mute相关性,比如,现在StreamType=STREAM_SYSTEM,对应volume调为0时,这是会发现ring/notification的都Mute了,这是如果让他们不要Mute,或者Music在SYSTEM为0时,他不是Mute住的,要将其Mute的,如何操作了,可以参考下面的:

参考一:

STREAM_SYSTEM_ENFORCED在4.0中也有定义,但是4.0和2.3架构不太一样,修改也不一样。
目前我们下面的note告诉您在android2.3上面完整的修改方法:
第一步:
改mediatek/config/{project}/system.prop, 其中
ro.camera.sound.forced=0 如果 原本没有定义就不用改了第二步所需要的修改如下:
1.修改DatabaseHelper.java的loadVolumeLevels方法,将
loadSetting(stmt, Settings.System.MODE_RINGER_STREAMS_AFFECTED,
(1 << AudioManager.STREAM_RING) | (1 << AudioManager.STREAM_NOTIFICATION) |
(1 << AudioManager.STREAM_SYSTEM) | (1 << AudioManager.STREAM_SYSTEM_ENFORCED));
替换为:
loadSetting(stmt, Settings.System.MODE_RINGER_STREAMS_AFFECTED,
(1 << AudioManager.STREAM_RING) | (1 << AudioManager.STREAM_NOTIFICATION) |
(1 << AudioManager.STREAM_SYSTEM));
2.修改AudioService.java的setStreamMute方法,在
if (isStreamAffectedByMute(streamType)) {
mStreamStates[streamType].mute(cb, state);
}
之前添加:
if(streamType == AudioSystem.STREAM_SYSTEM_ENFORCED){
mStreamStates[streamType].mute(cb, state);
}
3.修改AudioService.java的STREAM_VOLUME_ALIAS数组,将第8个值
AudioSystem.STREAM_SYSTEM, // STREAM_SYSTEM_ENFORCED
改为:
AudioSystem.STREAM_SYSTEM_ENFORCED, // STREAM_SYSTEM_ENFORCED
4.请使用如下语句来打开或者关闭拍照音:
1)获取AudioManager
AudioManager mAM;
mAM = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
2)打开拍照音:
mAM.setStreamMute(AudioManager.STREAM_SYSTEM_ENFORCED, false);
3)关闭拍照音:
mAM.setStreamMute(AudioManager.STREAM_SYSTEM_ENFORCED, true);关于上层菜单的实现,按照自己的需求设计,调用上面提供的接口即可。

参考二:

最近在写Android的Audio代码时发现,setStreamMute对一些stream type没有效果。例如alarm stream。后调查发现,在set stream mute的时候会调用函数isStreamAffectedByMute来判断指定的stream是否可以mute。函数isStreamAffectedByMute中使用mMuteAffectedStreams进行判断。return (mMuteAffectedStreams & (1 << streamType)) != 0;mMuteAffectedStreams在函数readPersistedSettings中被赋值:mMuteAffectedStreams = System.getInt(cr,System.MUTE_STREAMS_AFFECTED,((1 << AudioSystem.STREAM_MUSIC)|(1 << AudioSystem.STREAM_RING)|(1 << AudioSystem.STREAM_SYSTEM)));函数loadVolumeLevels中对此进行了设定:loadSetting(stmt, Settings.System.MUTE_STREAMS_AFFECTED,((1 << AudioManager.STREAM_MUSIC) |(1 << AudioManager.STREAM_RING) |(1 << AudioManager.STREAM_NOTIFICATION) |(1 << AudioManager.STREAM_SYSTEM)));如果要使某种stream可被mute,在此处添加该stream即可。

Android 系统各种StreamType 的Volume关联和Mute设置相关推荐

  1. Android系统中的屏幕状态切换以及亮度设置

    Android系统的状态包括wake.earlysuspend以及suspend状态,其使用锁和定时器来进行状态的切换. 而在wake状态,屏幕首先是调至设定的亮度,如果没有其他动作,当经过一段时间后 ...

  2. Android 系统级APP 升级方案 按键恢复出厂设置

    先敲黑板:(更多内容请关注专栏,支持原创) 概要:本文介绍内容有UBOOT BCB 系统级APP固化到固件 通过UBOOT完成按键触发恢复出厂设置,即恢复系统APP的方案 高质量文章导航 一.坐稳发车 ...

  3. Android系统定制-SystemUI-控制下拉状态栏快捷设置的下拉与关闭(通过按键控制)

    一.需求场景 Android 下拉状态栏快捷设置的下拉与关闭标准设计是通过我们手指触摸去滑动顶部状态栏,但有些场景,我们可能需要通过app或者某些按键去控制,这个时候我们就需要了解下拉状态栏快捷设置的 ...

  4. android系统(107)---Android路由表设置(route amp; DNS)

    Android路由表设置(route & DNS) route设置 android4.4只使用了一份路由表,使用busybox route就可以完成路由表的设置,从android5.0之后,考 ...

  5. 安卓android获取存储路径,Android系统的手机文件夹目录详解

    一.文件夹 1./acct/ 系统回收站,删除的系统文件. 2./cache/ 缓存 3./data/ 用户的所有程序相关数据 app/ 所有用户安装的apk文件 app-private/ data/ ...

  6. linux安卓手机文件夹,Android系统的手机文件夹目录详解

    一.文件夹 1./acct/ 系统回收站,删除的系统文件. 2./cache/ 缓存 3./data/ 用户的所有程序相关数据 app/ 所有用户安装的apk文件 app-private/ data/ ...

  7. Android系统的手机文件夹目录

    1./acct/ 系统回收站,删除的系统文件. 2./cache/ 缓存 3./data/ 用户的所有程序相关数据 app/ 所有用户安装的apk文件 app-private/ data/ 每一个应用 ...

  8. Android系统中震动器服务-VibratorService的分析,从App层到硬件抽象层(HAL层)

    简介: VibratorService是Android系统中的一个服务,作用是设置手机震动.Vibrator,即震动器,或者称之为马达,在真实的设备中,对应有一个小马达,是安装在手机里的硬件设备. A ...

  9. Android系统init进程启动及init.rc全解析

    这是一篇用心写的博客,也希望大家用心看并帮忙找到文章的改进之处,谢谢: 服务启动机制 system/core/init/init.c文件main函数中parse_config_file(init.rc ...

最新文章

  1. 古怪的ConfigurationManager类
  2. idea maven中的profiles是干什么的
  3. 震惊!来看《这份程序员面试手册》!!!
  4. 2021-02-28 Latex中文说明书、Latex海报模板
  5. Altium designer原理图库中元件变动后在原理图中同步更新方法
  6. Django在根据models生成数据库表时报 __init__() missing 1 required positional argument 'on_d...
  7. 从web层运作流程认识Struts2
  8. 大陆身份证号码正则验证js脚本
  9. 安卓 VNET 抓取 快手极速版cookie 教程
  10. SVN多项目共享导出及故障处理
  11. oracle analyze any,Oracle 工具:Analyze
  12. 大数据平台架构包含哪些功能
  13. 安阳工学院计算机专业宿舍,安阳工学院宿舍条件,宿舍环境图片(10篇)
  14. 这世上本来没有路,走的人多了,也便成了路
  15. 我工作上常用的--测试用例文档模板
  16. 机器学习(决策树四)——简述 剪枝
  17. 美食网站php模板,红色大气美食餐饮网站模板
  18. 吉多·范罗苏姆 --python创始人
  19. Java 生成图片验证码(包含全是字母、加减乘除、中文)3种方法
  20. .net大型分布式电子商务架构说明

热门文章

  1. IBatis存取图片在Oracle Blob大字段中Asp.Net
  2. 5.PHP与Web页面交互
  3. Intel汇编程序设计-高级过程(上)
  4. C语言经典例99-文件内容合并和排序
  5. C语言-动态内存分配总结
  6. 【Linux 内核 内存管理】优化内存屏障 ② ( 内存屏障 | 编译器屏障 | 处理器内存屏障 | 内存映射 I/O 写屏障 )
  7. 【C 语言】字符串模型 ( strstr-do…while 模型 )
  8. 【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 在函数中 间接修改 指针变量 的值 | 在函数中 间接修改 外部变量 的原理 )
  9. 【EventBus】EventBus 事件总线框架简介 ( EventBus 使用流程 )
  10. Hibernate 学习笔记(二)—— Hibernate HQL查询和 QBC 查询