setStreamMute無法Mute部分stream


標籤: streamsystemaudioandroid
 5883人閱讀 評論(4) 收藏 舉報
 分類:
最近在寫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即可。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章