我有一个配对的BLE生命力监控设备(例如血压袖带)和一个Android应用。测量后,外围设备会在几秒钟内做广告,这可能在一天中的任何时间发生。
Android设备是否可能不扫描任何内容,但外围设备的广告包仍触发应用内发生的某些事情?
我不确定,但是也许类似于蓝牙耳机一旦打开后如何自动与设备连接而无需任何用户交互?
我确实找到了这个question,但是看着library,它似乎只适用于信标外围设备,而我正在使用的vitals设备则不是这样(或外围设备是信标没关系吗?)
由于我的Google搜索并没有给我太多希望,所以我确实考虑过在低功耗模式下进行无休止的扫描。但是我们如何保证我们能够捕获一天中仅发生几秒钟的广告数据包?
谢谢!
答案 0 :(得分:1)
只需在autoConnect参数设置为true的BluetoothDevice对象上调用connectGatt
。有关更多详细信息,请参见Which correct flag of autoConnect in connectGatt of BLE?。如果重新启动了蓝牙,请记住要重新尝试连接(请参见https://stackoverflow.com/a/36763538/556495)。您还应该在应用程序进程中运行一个前台服务,以防止该进程被Android杀死。
最好先绑定设备(请参阅Android save BLE device to reconnect after app close原因)。
由于用于autoConnect的扫描参数的占空比很低,因此您应该以较短的间隔(20 ms)进行广告,至少1280 ms,最好是5或10秒,以防手机的蓝牙芯片中出现无线电调度冲突