AltBeacon setBluetoothAddress和setBluetoothName

时间:2016-04-17 05:49:19

标签: android altbeacon

我正在尝试使用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 个答案:

答案 0 :(得分:2)

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

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

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

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