我有一个简单的iOS应用程序,显示它使用诸如"立即","近"等表达式检测到的蓝牙LE信标的接近度.我需要在Android上编写类似的东西.
我已经按照Android开发人员的教程进行了操作,我能够列出检测到的设备,现在想要估算距离/接近度 - 这就是它成为问题的地方.根据这个SO线程,它只是一些数学计算.但是,它们要求我提供txPower值.
根据Dave Smith的本教程(以及与此蓝牙SIG声明的交叉引用),它应该由信标设备广播为类型的"AD结构" 0x0A.所以我所做的是解析AD结构并查找与该类型匹配的有效负载.
问题:我有4个信标 - 2个estimotes和2个appflares.estimotes根本不播放txPower,appflares将它们广播为0.
这里有什么我想念的吗?iOS应用程序似乎没有任何问题处理它,但使用iOS SDK它在幕后做,所以我不知道如何产生完全相同或类似的行为.还有其他方法可以解决我的问题吗?
如果您想查看我用来解析AD结构的代码,可以从前面提到的Dave Smith的github中获取,可以在这里找到.我对该类所做的唯一更改是添加以下方法:
public byte[] getData() {
return mData;
}
Run Code Online (Sandbox Code Playgroud)
这就是我处理扫描回调的方法:
// Prepare the callback for BLE device scan
this.leScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
if (!deviceList.contains(device)) {
MyService.this.deviceList.add(device);
Log.e("Test", "Device: " + device.getName());
List<AdRecord> adRecords = AdRecord.parseScanRecord(scanRecord);
for (AdRecord adRecord : adRecords) {
if …Run Code Online (Sandbox Code Playgroud) android bluetooth rssi bluetooth-lowenergy android-bluetooth
问题定义:
我一直在尝试proximity profile在Android上使用BLE 用于蓝牙LE.一些设备,如新一代谷歌Nexus平板电脑,4.3 Android支持BLE,可以充当central设备.我阅读了蓝牙LE的Android官方文档,但他们似乎没有任何支持.他们的任何解决方法是实现我们自己的接近配置文件?
在Android上讨论邻近配置文件但没有任何帮助的问题
任何帮助表示赞赏.谢谢.