android radiusnetwork iBeaconLibrary didDetermineStateForRegion何时被调用?

时间:2014-03-27 14:02:50

标签: android ibeacon ibeacon-android

我无法理解在ibeaconSevice库中使用didDetermineStateForRegion(int state,Region region)。

我有一个以后台模式运行的服务,当我第一次看到一个信标时 调用didEnterRegion(Region region)和didDetermineStateForRegion(int state,Region region)。然后停止扫描。在下一次扫描中,即使我仍在同一区域,也不会执行回调。 拜托,你能帮忙吗?

iBeaconManager.setBackgroundMode(this, true);
iBeaconManager.setBackgroundMode(this, true);    
     iBeaconManager.setMonitorNotifier(new MonitorNotifier() {
      @Override
      public void didEnterRegion(Region region) {
      Log.d(ConstantsDecoder.LOGTAG, "I just saw an iBeacon for the first time!"); 
}


@Override
public void didDetermineStateForRegion(int state, Region region) {
                Log.d(ConstantsDecoder.LOGTAG, "I have just switched from   seeing/not seeing iBeacons: "+state); 

            }

1 个答案:

答案 0 :(得分:1)

对于每个状态更改,这些方法只会被调用一次。所以它的工作原理如下:

  1. iBeacon对设备可见。

  2. didEnterRegiondidDetermineStateForRegion被调用。

  3. 当iBeacon对设备可见时,不再调用上述方法。

  4. 设备不再显示iBeacon。

  5. didExitRegiondidDetermineStateForRegion被调用。

  6. 当iBeacon对设备不可见时,不再调用上述方法。

  7. 转到第1步。

  8. 如果您希望每秒拨打一次电话,并显示所有正在查看的iBeacon列表,请使用测距示例代码here.