【问题标题】:How to enable altbeacon android library forground service only if entered beacon region?仅当进入信标区域时,如何启用 altbeacon android 库前台服务?
【发布时间】:2021-08-19 10:42:18
【问题描述】:

我在我的应用中使用 altbeacon android 库进行信标检测。它默认运行 前台服务 作为一项功能,但我只想在进入 信标区域 或检测到一个信标时运行前台服务。这个问题似乎没有在任何地方记录。你能帮帮我吗?

【问题讨论】:

    标签: service ibeacon altbeacon ibeacon-android android-ibeacon


    【解决方案1】:

    使用 AndroidBeaconLibrary 2.19+,自动绑定 API 可用于在检测后轻松切换到使用前台服务。

    基本步骤是:

    1. 自定义应用程序类中,在onCreate() 方法中调用beaconManager.startMonitoring(region)。这会使用计划作业设置初始信标检测。

    2. 当您收到对didEnterRegion() 的回调时,您需要为所有受监控和范围的区域调用beaconManager.stopMonitoring(...)beaconManager.stopRanging(...)

    3. 在第 2 步之后,为前台服务配置库,如图所示 here

    4. 再次开始监视/测量任何所需区域。

    谨慎使用上述方法,在某些情况下作为标准 Android will block starting a foreground service from the background in Android 12。此外,一些非标准 OEM 已经在较早的 Android 版本上执行此操作。

    一般而言,建议的做法是仅在 (a) 应用位于前台或 (b) 您知道用户最近与您应用的 UI 进行交互时才设置前台服务。如果 Android 阻止您的应用程序启动前台服务,则在配置了前台服务的情况下从后台启动监控/测距将导致您的应用程序崩溃。由于可能导致这种情况的条件复杂且难以预测,因此该技术可能会导致意外崩溃和相关错误。

    上述方法的一种替代方法是使用库中引入的新IntentScanStrategy,它可以在不需要前台服务的情况下进行更快的后台扫描。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多