2017-07-14 47 views
0

我的任务是修复一些在iBeacons中使用altbeacon的代码。 信标的检测在前台运行良好,但不在后台运行。关于RegionBootstrap以及何时使用它的疑问

在这种扫描在前景模式中,在进入背景的onStop使用来自beaconmanager解除绑定,然后调用该例在beaconBkgService的方法中的活动:

活动码:

protected void onStop() { 

    super.onStop(); 

    try { 
     // Do we need to unbind???? 
     iBeaconManager.unbind(this); 

     beaconBkgService.startScanning(); 

     } catch (Exception e) { 
     e.printStackTrace(); 
     } 

} 

beaconBkgService代码:

public class beaconBkgService extends Application implements BootstrapNotifier { 

    public void startScanning() { 

     try { 

      mBeaconManager = BeaconManager.getInstanceForApplication(this); 
      mBeaconManager.setBackgroundBetweenScanPeriod(3000L); 
      mBeaconManager.setBackgroundScanPeriod(1000L); 

      mBeaconManager.setBackgroundMode(true); 

      if (mRegionBootstrap == null){ 
       mAllBeaconsRegion = new ArrayList<Region>(); 

       for (UserBeacons userBeacon : userBeacons) { 

        mBeaconsRegion = new Region(userBeacon.identifier, userBeacon.UUID, null, null); 
        mAllBeaconsRegion.add(mBeaconsRegion); 
       } 
       mRegionBootstrap = new RegionBootstrap(this, mAllBeaconsRegion); 
      } 

     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

如果该活动的onStop调用灯塔管理员解除绑定()调用beaconBkgService.startScanning之前( )?我曾尝试过,但没有任何工作。

期望的结果是,当应用程序进入后台时,扫描应该每3秒持续1秒,但beaconBkgService didEnterRegion不会在启动信标和应用程序处于后台时触发。

当我得到这个工作时,如果Activity在前台检测到信标,那么ExitRegion如何实现,然后用户切换到背景并退出信标区域? beaconBkgService中的onExitRegion会触发吗?即使用RegionBootstrap从前景到后台保存状态?

回答

0

RegionBootstrapBootstrapNotifier不适用于和Android Activity。它们应该用于Android Application类或Android应用程序生命周期中存在的其他对象。

了解在Android生命周期中,随着用户在应用程序周围导航,创建和销毁活动。任何试图在活动中进行长期信标扫描的代码都不起作用。

相比之下,应用程序对象是在用户第一次启动应用程序时(或者应用程序由第一个信标检测自动启动)并且继续存在时创建的。

解决此问题的最简单方法是将其重写为使用Application类。您可以在Android Beacon库的示例代码中看到如何执行此操作的示例。见在这里背景节开始应用:http://altbeacon.github.io/android-beacon-library/samples.html

你也可能需要使用该代码在同一页面的汽车电池节能示例代码部分。

+0

感谢您的回复。后台扫描是在另一个类公共类beaconBkgService扩展应用程序实现BootstrapNotifier,以便应该是OK是吗? – newbie101