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

Xamarin中如何识别BLE扫描设备所用协议以区分iBeacon、Eddystone等

解决方案

是的,你完全可以通过解析Plugin.BLE.Abstractions.AdvertisementRecord中的广播原始数据,区分iBeacon、Eddystone等不同类型的BLE Beacon协议。

核心判断逻辑

你当前的代码只存储了扫描到的Device对象,要获取协议信息需要在DeviceDiscovered事件中读取a.AdvertisementRecords集合,按照不同协议的特征匹配即可:

  • iBeacon识别:iBeacon属于苹果定制的厂商自定义广播,匹配两个特征即可确认:
    • 广播记录类型为ManufacturerSpecificData(厂商自定义数据)
    • 厂商ID为0x004C(苹果官方厂商ID),且数据段前两个字节为0x02 0x15
  • Eddystone识别:Eddystone是谷歌推出的Beacon协议,匹配特征为:
    • 广播记录类型为ServiceData(服务数据)
    • 对应的服务UUID为0xFEAA(Eddystone专属服务ID),后续还可以根据帧头区分是UID、URL、TLM等不同子类型

代码修改示例

你可以参考下面的逻辑修改你的扫描回调部分:

Adapter.DeviceDiscovered += (s, a) =>
{
    if (!deviceList.Contains(a.Device))
    {                          
        deviceList.Add(a.Device);
        // 新增:解析广播记录判断协议类型
        string deviceType = "普通BLE设备";
        foreach(var record in a.AdvertisementRecords)
        {
            // 判断iBeacon
            if(record.Type == AdvertisementRecordType.ManufacturerSpecificData)
            {
                var data = record.Data;
                if(data.Length >= 4 && data[0] == 0x4C && data[1] == 0x00 
                    && data[2] == 0x02 && data[3] == 0x15)
                {
                    deviceType = "iBeacon设备";
                    // 还可以继续解析后续字节获取UUID、Major、Minor、发射功率等参数
                    break;
                }
            }
            // 判断Eddystone
            if(record.Type == AdvertisementRecordType.ServiceData)
            {
                var uuid = BitConverter.ToUInt16(record.Uuid.ToByteArray(), 0);
                if(uuid == 0xFEAA)
                {
                    deviceType = "Eddystone设备";
                    // 可根据数据段第一个字节判断是UID/URL/TLM等帧类型
                    break;
                }
            }
        }
        System.Diagnostics.Debug.WriteLine($"设备 {a.Device.Name} 类型:{deviceType}");
    }
};

注意事项

部分Beacon设备会分批发送多个广播包,单次扫描可能无法拿到完整的广播记录,遇到识别不准的情况可以增加多次广播采集的逻辑再做判断,准确率会更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:24:00