Android无非常规手段实现双应用同时播放音频及系统级开启咨询
Android多应用同时输出音频相关问题解答
一、无需非常规操作是否支持双应用同时输出音频
- 完全支持,这是Android原生自带的系统能力,不需要root、破解或者任何系统级修改即可实现。
- 实现基础依赖Android原生的音频焦点机制:默认状态下,只要应用申请音频焦点时没有请求独占权限,系统就允许多个应用同时输出音频。比如后台播放音乐时开启导航,导航播报只会压低音乐音量而不是完全停止音乐播放,就是该机制的实际落地表现。
- 如果你希望自己的应用可以和其他应用同时发声,只需要在申请音频焦点时选择非独占的焦点类型即可,示例代码如下:
// Android 8.0及以上申请可压低其他音频的非独占焦点示例 AudioAttributes audioAttributes = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(); AudioFocusRequest focusRequest = new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK) .setAudioAttributes(audioAttributes) .setWillPauseWhenDucked(false) .build(); int res = audioManager.requestAudioFocus(focusRequest);
返回值为AudioManager.AUDIOFOCUS_REQUEST_GRANTED时即可正常播放音频,此时其他后台音频只会被压低,不会被强制暂停。
二、是否支持在应用内提供选项全局开启该功能
- 不支持,该全局配置的控制权属于系统,第三方应用没有修改权限。
- 目前Android系统没有向普通第三方应用开放修改全局音频输出策略的权限,你只能在自己的应用内调整自身的音频焦点策略,决定自己的应用要不要和其他应用同时发声,无法修改其他应用的音频行为,也无法切换系统层面的全局多音频输出开关。
- 部分厂商定制ROM的全局多音频开关入口在「声音和振动」类的系统设置页,你可以引导用户自行前往设置,但无法在应用内直接操作开关。
内容的提问来源于stack exchange,提问作者siya
相关产品推荐
相关产品推荐

