我们想在android 4.3上开发ibeacon功能。为了提高精度,我们将外设的广告费率提高到50Hz。但是" LeScanCallback"每秒仅调用3到5次。然而,"做了发现周边"在iPhone上调用可以达到每秒100次。 我试图重启" startLeScan"每500ms,400ms,300ms。增幅有限。 当我将外围设备的广告费率设置为10Hz时。 " LeScanCallback"被叫为每秒1到3个。
有什么建议吗? 会不会更好如果我编写一个JNI代码来直接调用低级api,比如ble驱动程序。
答案 0 :(得分:1)
这可能是特定于设备的问题。我在Nexus和三星设备上做了很多类似的测试,信标以20 Hz的频率传输,通常看到大约80%的数据包在Android设备上被检测到。 (意思是每秒调用LeScanCallback 16次。)
某些设备(例如Nexus 4,Moto G)的芯片组每个唯一扫描的蓝牙mac地址只返回一个广告数据包,直到您停止并重新开始扫描。
我怀疑低级代码会有所帮助。在采取这样的步骤之前,我会尝试使用其他设备。