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

相关文章:

  • 2022-01-02
  • 2021-04-18
  • 2022-02-05
  • 2021-11-07
  • 2021-06-04
  • 2021-09-01
  • 2021-09-06
  • 2022-12-23
猜你喜欢
  • 2021-05-29
  • 2022-02-22
  • 2021-11-21
  • 2022-12-23
  • 2022-01-15
  • 2022-12-23
  • 2021-06-15
相关资源
相似解决方案