Android 使用AudioFocus控制多个应用的声音输出。用户可以通过requestAudioFocus(OnAudioFocusChangeListener l, int Stream_type,int dura_hint)或者abandonAudioFocus(onAudioFocusChangedListener)来申请或者释放焦点,同时可以接收onAudioFocusChangeListener回调控制自己的播放。由于在request的时候,传递了Stream_type参数,但是自己写代码验证AudioFocus的变化与Stream_type是无关的,为了进行确认,对该流程进行了分析。
序列图如下:
其中主要的处理在MediaFocusControl中,分析流程图如下:
通过分析初步了解了焦点控制流程,确认了焦点变化确实与Stream_type无关。但是Android这样设计一定也有它的道理,还不知道为什么,如果大家有不同的看法,欢迎探讨!