Android后台BLE信标扫描

Android background BLE beacon scanning

我想创建一个 android 应用程序,在后台扫描 BLE 信标(例如 Eddystone 或 ibeacon)。我所需要的只是在我的 phone 上检测到具有特定 ID 的信标。我不需要设备之间的距离。

  1. 是否有任何信标能够在半径约 30m 的区域内通过建筑物中的 cca 3 面墙(或 1 次洪水 up/down)发送信号?

  2. 我的应用程序可以整天每隔几秒在后台扫描一次吗? (或者当蓝牙打开时,很明显...)

我尝试了一些解决方案,但 android 改变了一些关于背景 运行ning 应用程序或蓝牙接收器(检测蓝牙何时打开)的策略。我的解决方案有时甚至可以运行 7 个小时,但是当我重新启动 phone 时,应用程序没有重新启动。我想要一个完整的后台 运行,而不是带通知的前台服务。

谢谢!

两点:

  1. 所有蓝牙信标格式都使用相同的无线电传输机制。无线电功率受到国际监管机构的限制,使发射机变弱。
    物理定律决定了它们在建筑物楼层之间的移动程度,这会因建筑材料而异,但结果通常很差。同样,这对于所有信标格式都是相同的。

  2. Android 8+ 限制在没有前台服务的情况下在后台检测 BLE。当 phone 未处于深度睡眠模式时,您最多可以每 10-25 分钟进行一次扫描(这是随机的)。唯一的选择是带有永远存在通知的前台服务。

我知道这些不是您想听到的答案,但重要的是要认识并接受 real-world 存在的局限性,并在这些局限性内提出创造性的解决方案。