我有一个BLE设备,尝试以15分钟到一个小时的间隔传输20秒的数据。该设备已与手机配对,因此可以使用加密。我希望BluetoothDevice.ACTION_ACL_CONNECTED
广播能够配对,因此能够触发,这样我就可以使用IntentService检索数据了。
不幸的是,广播并未触发,我的猜测是这是因为与传统的蓝牙设备相比,BLE设备不需要真正的连接。
据我所知,完成这项工作的唯一方法是在服务中使用BluetoothLeScanner
。与间隔相比,传输持续时间短,因此需要连续扫描。扫描超时为30分钟,因此必须定期重新启动扫描。另外,由于无法再使用长时间运行的Android 8后台服务,这意味着我要么必须使用前台服务,要么使用JobScheduler
每30分钟扫描30分钟。
所以现在的问题是:在这种情况下,最佳实践是什么?
我发现了一个类似的问题(Creating background services for Bluetooth low energy on Android),但是它已经存在了4年之久,因此Android可能需要进行一些更改以简化此操作。