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

.NET MAUI中Shiny.BluetoothLE无法识别已连接蓝牙设备求助

解决.NET MAUI中Shiny.BluetoothLE扫描已连接设备无结果的问题

1. 权限配置与动态请求

  • 检查平台权限配置:
    • Android:在AndroidManifest.xml中添加<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />和<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />(Android 12+必需)。
    • iOS:在Info.plist中添加NSBluetoothAlwaysUsageDescription(填写蓝牙使用场景描述),iOS 13+需确保权限申请逻辑合规。
  • 扫描前必须动态请求权限:执行await Ble.RequestAccess(),只有返回AccessState.Available时再进行设备查询,避免权限不足导致无结果。

2. 修正设备查询逻辑

  • 区分“扫描可发现设备”与“获取已连接设备”:Shiny中获取已连接设备需调用Ble.GetConnectedPeripherals(),而非普通的扫描方法(普通扫描针对未配对/可发现设备)。
  • 确保逻辑顺序:先获取权限,再调用GetConnectedPeripherals(),避免权限未就绪时执行查询。

3. 确认设备实际连接状态

  • 验证测试设备的蓝牙设备是已配对且处于活跃连接状态,而非仅配对未连接。部分设备配对后会自动断开,需在系统蓝牙设置中确认“已连接”状态。
  • 部分蓝牙设备仅在特定操作(如数据传输)时保持连接,需确保测试设备处于持续连接状态。

4. 检查代码初始化与依赖注入

  • MauiProgram.cs中确认已注册Shiny蓝牙服务:
    builder.Services.AddShinyBluetoothLE();
    
  • 在App启动时初始化Shiny:在App构造函数中调用await ShinyHost.StartAsync()。
  • BluePage.xaml.cs中通过依赖注入获取IBle实例,而非手动创建:
    private readonly IBle _ble;
    
    public BluePage(IBle ble)
    {
        InitializeComponent();
        _ble = ble;
    }
    
    private async void ScanButton_Clicked(object sender, EventArgs e)
    {
        var access = await _ble.RequestAccess();
        if (access != AccessState.Available)
        {
            await DisplayAlert("提示", "蓝牙权限未授予", "确定");
            return;
        }
    
        var connectedDevices = _ble.GetConnectedPeripherals();
        if (connectedDevices.Any())
        {
            // 处理已连接设备列表
        }
        else
        {
            await DisplayAlert("提示", "无已连接设备", "确定");
        }
    }
    

5. 平台特定问题排查

  • Android:Android 12+需单独请求BLUETOOTH_CONNECT权限,不能仅依赖Manifest静态配置。
  • iOS:确保App已获得蓝牙权限,可在系统设置中检查应用权限状态。
  • Windows:在Package.appxmanifest中声明蓝牙功能,确保应用有权限访问蓝牙设备。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:12:38