最近在写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即可。

更多相关文章

  1. Android(安卓)display架构分析(三)
  2. Android(安卓)开发小提示集合
  3. android 5 设置图案锁,锁屏界面进入相机拍照、查看锁定的照片后,退
  4. EventBus使用详解(二)——EventBus使用进阶
  5. Android系统的开机画面显示过程分析(8)
  6. android usb大体流程解析
  7. Android高效计算——RenderScript
  8. android restart reason机制
  9. Android(安卓)Cursor源码笔记(2)

随机推荐

  1. Qt for Android(安卓)自定义启动页(解决
  2. Android6.0------权限申请管理(单个权限和
  3. 解析后台进程对Android性能影响的详解
  4. Android(安卓)生成正式签名的APK文件
  5. Android仿微信小视频录制功能(二)
  6. Android(安卓)Matrix的使用与自定义动画
  7. 如何抽取一个通用的Android(安卓)Loading
  8. 在Android(安卓)JNI环境下使用C++的几个
  9. Android歌词秀1.5版
  10. unity游戏开发 发布android 游戏 (一)