android - BLE Peripheral 的广告能否唤醒并触发与 Master Android 设备的连接?
问题描述
我有一个配对的BLE 生命体征监测设备(例如血压袖带)和一个 Android 应用程序。测量后,外围设备会发布几秒钟的广告,这可能发生在一天中的任何时间。
Android 设备是否有可能不扫描任何东西但仍然让外围设备的广告数据包触发应用程序内发生的事情?
我不确定,但也许类似于蓝牙耳机一旦打开,无需任何用户交互即可自动连接设备?
我确实找到了这个问题,但是查看库,它似乎仅适用于信标外围设备,而我正在使用的生命体征设备并非如此(或者外围设备是否是信标无关紧要?) .
因为我的谷歌搜索并没有给我太多希望,所以我确实考虑过用低功耗模式无休止地扫描。但是我们如何保证我们能够捕获全天仅发生几秒钟的广告数据包呢?
谢谢!
解决方案
只需调用connectGatt
您的 BluetoothDevice 对象,并将 autoConnect 参数设置为 true。请参阅BLE 的 connectGatt 中哪个正确的 autoConnect 标志?更多细节。如果蓝牙重新启动,请记住重新启动连接尝试(请参阅https://stackoverflow.com/a/36763538/556495)。您还应该在您的应用程序进程中运行一个前台服务,以防止该进程被 Android 杀死。
最好先绑定设备(请参阅Android 保存 BLE 设备以在应用关闭后重新连接原因)。
由于用于自动连接的扫描参数占空比非常低,因此您应该以短间隔(20 毫秒)至少 1280 毫秒(最好是 5 或 10 秒)进行广告,以防手机蓝牙芯片中存在无线电调度冲突。
推荐阅读
- python - 如何读取excel文件并将内容转换为python中的列表列表?
- php - 通过控制台显示从ajax中的字段获取的数据
- java - 自定义弹簧引导配置文件未在 IntelliJ 中激活
- reactjs - React - 如何找出 FireStore 集合中的最后一个文档
- java - 刷新面板时如何更改 JComboBox 中的选定索引?
- mysql - WRONG_VALUE_COUNT_ON_ROW:但我看不出问题?
- java - 当覆盖方法时,为什么必须先在超类中编写它,即使它对超类没有意义?
- javascript - 如何将变量 javascript 作为 html 中的样式 css 属性?
- ruby-on-rails - 使用最后一个和下一个按钮按月/年遍历记录 Rails 6
- python - Cython:无法分配给二维向量