首页 文章

AltBeacon setBluetoothAddress和setBluetoothName

提问于
浏览
0

我正在尝试使用altbeacon库作为信标传输Android手机,如here所述 . 我试图使用以下方法设置一些参数:

setServiceUuid(0xfeaa)
setBluetoothAddress("31:14:15:92:65:35")
setBluetoothName("MyBeacon")

当在RangeNotifier侦听器方法didRangeBeaconsInRegion中的另一个Android设备上解释信标时,信标没有设置这些参数 . (例如,getServiceUuid为-1,BT地址和名称均为空) .

我在解析器中使用以下信标布局用于传输应用程序和扫描应用程序:

m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25

我不知道这意味着什么;我想知道我是否需要改变它 .

任何人都知道如何在接收设备上扫描的信标中访问蓝牙地址,名称等?

1 回答

  • 2

    Beacon 类中的某些字段仅在检测信标时使用,不会影响传输 . 您已找到其中三个确切的字段 . 以下是对它们的解释:为什么它们以这种方式工作:

    • BluetoothAddress :这是手机蓝牙芯片内置的固定六字节唯一地址 . 当发送分组(信标通告或其他)时,芯片总是使用相同的地址 . 你无法改变它 . 这只是蓝牙的工作方式 .

    • BluetoothName :这是其他蓝牙扫描仪可见的手机友好名称 . 更改此名称不仅会影响信标传输,还会影响手机上的所有蓝牙操作 . 因此,库的 BeaconTransmitter 不会更改此名称 . 但是,您可以通过在Android的 BluetoothAdapter 类上调用 setName 方法来自行完成 . 见here .

    • ServiceUUID :此字段仅适用于某些信标格式,例如Eddystone,它们基于16位GATT服务UUID . 对于其他信标格式(AltBeacon,iBeacon),如您所见,此值为-1 . ServiceUUID实际上是在 BeaconParser 布局表达式中定义的 . 在Beacon类中,您可以阅读它,但写入它不起作用 . 您通常不需要担心此字段,当然也不需要担心问题中显示的AltBeacon布局,因为它不用于该格式 .

相关问题