我有一个工作的BLE扫描应用程序,这是过去几个月来一直良好的Nexus 5(在不同的API版本,从4.4到6.0 )。今天,我们在不同的设备上运行了这个应用程序--“华为Ascend Mate2”,它有API 22,并发现了我认为是一种有趣或奇怪的行为:回调会持续进行(大约每秒三次),但是在一个回调中只检测到我的iBeacon,而在剩下的回调中,它会选择家里的其他设备(比如netgear路由器和roku等;我不知道这个netgear和rouku是否是BLE设备)。我的BLE扫描代码非常类似于这里描述的http://www.truiton.com/2015/04/android-bluetooth-low-energy-ble-example/
这个线程Android 4.4 BLE Scanning lack of stability表明BLE扫描在5.0+上是稳定的,但在我的例子中,这不是真的,因为我使用API 22。
这个线程Android BLE Beacon scanning on different phone models建议我们需要每1.5秒打开并关闭扫描,这在我们的用例中是不实际的,因为我们的应用程序应该每天运行10个小时(我们认为启动/停止系统资源是昂贵的操作)
我对为什么在Nexus 5上的连续回调(在4.4和6.0Android API上都进行了测试)中检测到相同的信标感到困惑;但是,当运行在"Huawei Ascend Mate2“上时,尽管不断调用回调,但在随后的回调中只检测到同一iBeacon一次,而其他非BLE设备则被检测到。
这是我第一次在Nexus外面测试。有没有人在“华为Ascend Mate2”上测试BLE扫描?请提出任何意见和评论。
“华为升级Mate2":设备型号为MT2L03,安卓版本为5.1
发布于 2016-06-24 08:58:42
我和很多不同的设备一起工作,我可以告诉你们,在不同的设备上的行为是非常不同的。我没有华为的Mate2,但我可以观察到类似的行为,每台设备只能得到一次扫描结果。因此,如果需要对同一设备进行多次扫描,则需要不时重新启动扫描。我认为1.5s有点过了,但这取决于您的用例。
https://stackoverflow.com/questions/37802788
复制相似问题