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

Android平台.NET/C#连接远程蓝牙设备时如何指定服务名?

在Android .NET/C#中连接蓝牙设备时指定服务名的方法

蓝牙RFCOMM连接的核心标识是UUID,服务名只是注册服务时绑定的友好展示名称,客户端无法直接通过服务名创建连接,必须先找到对应服务名关联的UUID,再用该UUID建立连接。以下是具体实现步骤:

1. 枚举远程设备的所有服务UUID

通过BluetoothDevice.GetUuids()获取设备广播的所有服务UUID,遍历这些UUID并解析对应的服务名。若设备未主动广播UUID,可调用FetchUuidsWithSdp()触发SDP查询,通过监听BluetoothDevice.ActionUuid广播获取结果。

2. 解析服务记录中的服务名

每个UUID对应一条服务记录,其中属性ID为0x0100的字段就是服务名称(UTF-8编码),解析该字段即可匹配目标服务名。

完整代码示例

using Android.Bluetooth;
using System.Text;

// 目标服务名
const string TargetServiceName = "MyServiceName";

// 假设remoteDevice是已获取的远程蓝牙设备实例
var uuids = remoteDevice.GetUuids();
if (uuids == null)
{
    // 触发主动SDP查询
    remoteDevice.FetchUuidsWithSdp();
    // 需注册广播接收器监听BluetoothDevice.ActionUuid获取查询结果
    return;
}

foreach (var uuidParcel in uuids)
{
    var serviceUuid = uuidParcel.Uuid;
    var serviceRecord = remoteDevice.GetServiceRecord(serviceUuid);
    if (serviceRecord == null) continue;

    var serviceName = GetServiceNameFromRecord(serviceRecord);
    if (serviceName == TargetServiceName)
    {
        // 找到目标服务,创建RFCOMM套接字
        var socket = remoteDevice.CreateRfcommSocketToServiceRecord(serviceUuid);
        // 执行连接操作
        // socket.Connect();
        break;
    }
}

// 解析服务记录中的服务名
private string GetServiceNameFromRecord(BluetoothDevice.ServiceRecord serviceRecord)
{
    try
    {
        // 获取属性ID为0x0100的服务名称字段
        var attribute = serviceRecord.GetAttribute(0x0100);
        if (attribute != null && attribute.Value != null)
        {
            return Encoding.UTF8.GetString(attribute.Value);
        }
    }
    catch (Exception)
    {
        // 处理解析异常
    }
    return null;
}

关键说明

  • 权限要求:Android 12及以下需申请BLUETOOTH、BLUETOOTH_ADMIN权限;Android 13+需申请BLUETOOTH_CONNECT、BLUETOOTH_SCAN权限,部分场景还需定位权限。
  • 服务名仅用于外部展示,连接的核心依赖是UUID,需确保目标服务的UUID在远程设备上已正确注册并关联到指定服务名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:01:05