如何增加 LeScanCallback 频率?
how to increase LeScanCallback frequency?
我们想在android 4.3 上开发ibeacon 功能。为了提高准确性,我们将外设的广告率提高到 50Hz。但是 "LeScanCallback" 每秒只调用 3 到 5 次。但是,在 iPhone 上调用 "didDiscoverPeripheral" 每秒最多可以调用 100 次。
我尝试每隔 500 毫秒、400 毫秒、300 毫秒重新启动 "startLeScan"。涨幅有限。
当我将外设的广告率设置为 10Hz 时。 "LeScanCallback" 的调用率下降到每秒 1 到 3 次。
有什么建议吗?
如果我写一个JNI代码像ble driver一样直接调用low level api会不会更好
这可能是特定于设备的问题。我在 Nexus 和 Samsung 设备上做了很多类似的测试,信标以 20 Hz 传输,通常看到大约 80% 的数据包在 Android 设备上被检测到。 (意味着 LeScanCallback 每秒调用 16 次。)
一些设备(例如 Nexus 4、Moto G)的芯片组只有 return 每个唯一扫描的蓝牙 mac 地址只有一个广告数据包,直到您停止并重新开始扫描。
我怀疑较低级别的代码是否有帮助。在采取这样的步骤之前,我会尝试使用不同的设备。
我们想在android 4.3 上开发ibeacon 功能。为了提高准确性,我们将外设的广告率提高到 50Hz。但是 "LeScanCallback" 每秒只调用 3 到 5 次。但是,在 iPhone 上调用 "didDiscoverPeripheral" 每秒最多可以调用 100 次。 我尝试每隔 500 毫秒、400 毫秒、300 毫秒重新启动 "startLeScan"。涨幅有限。 当我将外设的广告率设置为 10Hz 时。 "LeScanCallback" 的调用率下降到每秒 1 到 3 次。
有什么建议吗? 如果我写一个JNI代码像ble driver一样直接调用low level api会不会更好
这可能是特定于设备的问题。我在 Nexus 和 Samsung 设备上做了很多类似的测试,信标以 20 Hz 传输,通常看到大约 80% 的数据包在 Android 设备上被检测到。 (意味着 LeScanCallback 每秒调用 16 次。)
一些设备(例如 Nexus 4、Moto G)的芯片组只有 return 每个唯一扫描的蓝牙 mac 地址只有一个广告数据包,直到您停止并重新开始扫描。
我怀疑较低级别的代码是否有帮助。在采取这样的步骤之前,我会尝试使用不同的设备。