版權聲明:本文爲博主原創文章,未經博主允許不得轉載。
後調查發現,在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即可。