setStreamMute无法Mute部分stream
16lz
2021-01-26
最近在写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即可。
后调查发现,在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(安卓)display架构分析(三)
- Android(安卓)开发小提示集合
- android 5 设置图案锁,锁屏界面进入相机拍照、查看锁定的照片后,退
- EventBus使用详解(二)——EventBus使用进阶
- Android系统的开机画面显示过程分析(8)
- android usb大体流程解析
- Android高效计算——RenderScript
- android restart reason机制
- Android(安卓)Cursor源码笔记(2)