ScanRecord.getBytes()

在 Android 开发中,通过 ScanRecord.getBytes() 获得的字节数组值来源于蓝牙设备广播的原始数据包经过底层 SDK 处理后合并的结果,其结构由两部分组成:

  1. 普通广播包(30字节)​
    这部分数据对应蓝牙协议中固定的广播格式,包含基础设备信息。例如:

    • 前2字节:标志位(Flags),如 0x020106 表示蓝牙版本和功能支持
    • 厂商自定义数据:如 iBeacon 的标识符 1AFF4C000215(苹果公司 ID 0x004C 开头)及后续的 UUID、Major、Minor 等字段
  2. 应答包(最多32字节)​
    由厂商或设备自定义的扩展数据,常见内容包括:

    • 设备名称:如 4D696E69426561636F6E 对应 ASCII 码的 "MiniBeacon"
    • 服务数据(Service Data)​:如 F0FF 开头的 Service UUID 及其附属数据
    • 发射功率(Tx Power)​:如 0x00 表示 0dBm

Android SDK 会将上述两部分数据合并为固定长度62字节的数组​(不足部分用0填充),并通过 getBytes() 直接暴露给开发者。例如:

  • iBeacon 的核心数据​(UUID、Major、Minor)通常位于前30字节的广播包中
  • 动态或扩展信息​(如设备名称、额外服务数据)则可能存在于应答包的32字节内

需要注意的是,蓝牙数据以低位到高位(Little-Endian)​​ 传输,解析时需反转字节顺序。例如 MAC 地址 8b0300b001c2 实际应为 c2:01:b0:00:03:8b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值