paired/bonded 蓝牙设备能否唤醒 Oreo 或更高级别的 Android 设备

Can a paired/bonded bluetooth device wake an Oreo or higher Android device

我有一个安全系统,移动蓝牙 LE 设备会导致我的 android 应用程序执行一些工作。在一些较新的 Android 更新后,我相信 API 26,如果 Android 设备的屏幕关闭,我将无法再获得这些更新。我试图想办法解决这个问题并想出了一个主意:

如果我将 Android 设备与蓝牙设备配对会怎么样 - 这是否允许在 Android 屏幕关闭时接收消息?

以前,我所有的 BLE 设备都是网格的一部分,所以我会定期让 Android 应用程序检查网格中的变化,并在需要时打开屏幕通知用户。现在,由于引入了后台执行限制,我必须要求 Android 设备始终打开屏幕,这会导致显示时间过长。

我不太擅长用 C 语言编程,这是 BLE 芯片的编程语言,所以我想先问这个问题,然后再花几个小时才发现这行不通。所以,只是重复这个问题:当 Android 屏幕关闭时,将 BLE 设备与 Android 设备配对是否允许通过这些限制发送消息?

如果没有 - 有没有什么办法可以让这项工作成功?

感谢您提供任何信息!

  1. 使用通知代替广告。这将立即传送数据,即使屏幕关闭也能正常工作。 Android 的较新版本在屏幕关闭时对 BLE 扫描引入了更多限制。

  2. 使用 connectGatt 并将 autoConnect 设置为 true 以自动连接并在连接断开时重新连接。

  3. 在您的应用进程中使用前台服务以防止应用进程被终止。如果您的应用进程退出,所有蓝牙连接也会断开。

  4. 您可以使用 CompanionDeviceManager 获得一些额外的权限。

您真的不需要配对,但它有一些好处,例如更快的连接设置和正确记住地址类型(API 中的缺陷,这是缺失的)。