如何通过Flutter或原生开发实现Android/iOS扬声器与蓝牙耳机同时播放音频
音频同时输出到扬声器与蓝牙耳机的实现方案
以下为Android、iOS原生及Flutter开发场景下的实现可行性说明:
原生开发实现逻辑
Android 平台
- 仅 Android 10(API 等级29)及以上版本 支持通用多音频路由输出能力,低于该版本的系统无官方公开的实现方案,仅部分厂商定制ROM可能存在私有支持。
- 实现步骤:
- 申请
MODIFY_AUDIO_ROUTING权限 - 通过
AudioManager枚举当前已连接的音频输出设备,分别获取扬声器、蓝牙耳机对应的AudioDeviceInfo实例 - 创建两个独立的音频播放轨道,调用
setPreferredDeviceForTrack方法分别为两个轨道绑定不同的输出设备 - 同步两个音频轨道的播放进度,即可实现同时输出
- 申请
iOS 平台
- iOS系统的
AVAudioSession音频会话框架存在系统级限制,同一时间仅允许激活一个音频输出路由,没有公开API支持同时输出到扬声器和蓝牙耳机。 - 若使用未公开的私有API实现该功能,会导致App Store审核被拒,无法正常上架,因此不建议尝试。
Flutter 开发实现逻辑
- 你当前使用的
flutter_audio_manager库仅支持单音频路由切换,无法满足双设备同时输出需求。 - Android场景下可通过
MethodChannel自行桥接上述原生多路由输出逻辑,即可实现需求。 - iOS场景下受系统限制,无合规实现方案,建议针对iOS用户仅保留单设备输出切换能力。
内容的提问来源于stack exchange,提问作者Mafaza Chabane
相关产品推荐
相关产品推荐

