信标进入范围时,甚至在Android 8+上,都可以使用AltBeacon库来唤醒我的应用程序吗?

时间:2019-05-03 13:14:27

标签: android altbeacon

我希望编写一个用户安装的应用程序,然后忘记它。当他/她的android智能手机检测到街道上的信标时(我不在乎距离,RSSI电源...),它将启动我的应用程序。在Android 8+中,有没有办法立即找到信标而不耗尽电池或每15分钟左右进行一次扫描?如果用户沿着位于2个以上信标的街道移动,会发生什么情况?当他/她接近其他人时,他/她还能检测到吗? AltBeacon库可以满足我的需求吗?

我迅速阅读了AltBeacon文档,只是为了寻找我的项目是否可行,但我仍然对Android上的BLE限制尚无清晰的认识。

如果我在尝试编写的代码上多花几句话可能会更好。我希望在相对较小的区域中的30至40家不同种类的商店(衣服,食物,服务等)中放置信标。当用户在我的android智能手机上安装了我的应用(但未运行)并经过其中一家商店时,我的应用应自动唤醒并通知他,在XY商店中有特定优惠。

因此,在我开始学习Java和Android Studio(通常是在Delphi中编写代码)之前,我要确保:

1)我的应用程序能否在商店A中检测到信标X,并且两分钟后,当用户过马路并靠近商店B时,它也可以检测到其信标Y吗? 15分钟的限制是否会使我无法检测到信标Y(以及所有其他信标)?

2)我不在乎用户与商店之间的距离:如果我的应用“看到”信标X,就足以触发要约通知。此要求会耗尽用户的手机电池吗?

关于, 菲利波

非常感谢你, 菲利波

1 个答案:

答案 0 :(得分:0)

是的,Android Beacon库完全可以按照您的描述进行操作。您可以使用reference app进行测试。

即使在Android 8+上,后台进行的首次检测通常也来自0-5 seconds

Android 8+ 上的默认行为是,每15分钟进行一次简短的完整BLE扫描几秒钟,这是在持续的硬件过滤器支持的低功耗扫描的基础上进行的。测试表明,这种方式消耗的电池很少,用户通常不会注意到它处于活动状态。

由于Android 8+上的后台运行限制,因此快速连续在后台检测多个不同的信标存在一定的局限性。一般而言,开箱即用的库在15分钟内不会比一次更频繁地检测到新的信标检测。有多种方法可以配置库以支持更多的检测,但是它们要求在首次检测到信标后15分钟内启动前台服务,以检测其他信标,直到下一个15分钟的周期开始。

以上限制适用于Android Beacon库和使用Android BLE扫描的任何类似SDK。有关为何如此的描述,请参见here

但是请注意,某些中国Android OEM在其手机中内置了专有的节能功能,这可能阻止任何长期的后台工作正常运行,除非您可以某种方式将您的应用列入中国OEM的白名单。有关更多信息,请参见here