You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让.NET Maui应用在iOS/Android上自动路由音频至蓝牙设备?

.NET Maui 蓝牙音频路由问题解决方案

iOS 端缺失的配置

.NET Maui 默认的 AudioManager 创建的播放器,可能使用的是AVAudioSessionCategorySoloAmbient类别,这类别不会自动触发蓝牙音频路由切换。你需要手动配置音频会话类别为支持蓝牙的类型,同时设置对应选项:

using AVFoundation;

public void SetupAudioSession()
{
    var session = AVAudioSession.SharedInstance();
    NSError error = null;
    // 设置类别为Playback,允许蓝牙输出
    session.SetCategory(AVAudioSessionCategory.Playback, AVAudioSessionCategoryOptions.AllowBluetooth, out error);
    // 激活会话使配置生效
    session.SetActive(true, out error);
}

在调用 audioPlayer.Play() 前执行上述代码,iOS 系统就会自动将音频路由到已连接的蓝牙设备。

Android 端配置要点

Android 需要通过音频管理器设置正确的模式,让系统优先选择蓝牙音频设备:

using Android.Media;

public void ConfigureAudioRouting()
{
    var audioManager = (AudioManager)Android.App.Application.Context.GetSystemService(Android.Content.Context.AudioService);
    // 设置为通讯模式,自动优先蓝牙设备
    audioManager.Mode = Mode.InCommunication;
    // 关闭扬声器,强制使用已连接的蓝牙设备
    audioManager.SetSpeakerphoneOn(false);
}

同样在播放音频前调用该方法,Android 会自动切换到配对的蓝牙音频设备。

蓝牙音频路由机制说明

  • iOS:由 AVAudioSession 统一管理路由策略。当会话类别设置为 Playback 或 PlayAndRecord 并允许蓝牙选项后,系统会自动监测蓝牙设备连接状态,连接时自动切换音频输出到蓝牙设备,断开时恢复默认扬声器。其他应用能正常切换,是因为它们使用了符合要求的音频会话类别。
  • Android:由 AudioManager 管控路由。设置 MODE_IN_COMMUNICATION 这类模式后,系统会优先将音频输入输出导向蓝牙设备;未设置时,默认可能保持使用内置扬声器。

后续麦克风录制的适配提示

当添加麦克风功能时,iOS 需将会话类别改为 PlayAndRecord,Android 保持 MODE_IN_COMMUNICATION 模式,系统会自动将麦克风输入路由到蓝牙设备的麦克风。

内容的提问来源于stack exchange,提问作者Gratzy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:40:09