2016-05-17 20 views
0

我想从android手机传输带有数据标志的iBeacon数据包。安卓设备可以充当iBeacon,带有标志吗?

Data Flag(0x01)是代表信标能力的蓝牙GAP规范。

我的情况:

目前,我尝试使用BluetoothLeAdvertiser做广告。但它不符合我的想法。我发现,我只能宣传“制造商的具体数据”。

BluetoothManager manager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE); 
mBluetoothAdapter = manager.getAdapter(); 
mBluetoothLeAdvertiser = mBluetoothAdapter.getBluetoothLeAdvertiser(); 

// Settings here 

mBluetoothLeAdvertiser.startAdvertising(settings, getAdvertiseData(), mAdvertiseCallback); 


我现在的结果是:

enter image description here


我想要什么:

常见iBeacon显示数据包(如下图所示)有数据标志,键入0x01。我想将这个标志添加到我的iBeacon广告数据包中。
这意味着,我想将原始数据“0x020106”添加到数据包的头部分。
我该如何归档?

enter image description here


等:

我已经阅读下面的问题,但它并不能帮助我的问题。
Can an Android device act as an iBeacon?


另外,我已经读了Android的BLE API不支持数据标志。
但是评论是在2015年,现在有没有任何希望的变化?

https://github.com/AltBeacon/android-beacon-library/issues/141

不幸的是,这不是目前在Android的API BLE允许,所以库不能这样。


任何帮助将不胜感激。谢谢。

+0

iBeacon是苹果自己的BLE的一部分。如果内存能够正常运行,那么在不久以前就有了一个关于AltBeacon支持库和Apple的法律问题。 – t0mm13b

+0

感谢您的评论,t0mm13b。我明白。我的观点是,我可以在“Beacon包”中添加“数据标志(0x01)”和“制造商特定数据(0xFF)”吗? –

+0

你真的先试过吗? – t0mm13b

回答

1

不幸的是,Android的Java BLE APIs没有办法做到这一点。我研究了这个话题来回答你引用的Android Beacon Library Issue。 Java API只允许您通告服务数据或制造商数据。它们不够灵活,无法让您指定任何其他广告PDU。截至2016年5月,这一数字没有变化。

您可以通过降到较低级别并与C BlueDroid API交谈来做你想做的事。但是这样做需要一个固定的设备,并且可能会安装一个定制的Android操作系统映像来为您提供访问权限。