我无法理解在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);
}
答案 0 :(得分:1)
对于每个状态更改,这些方法只会被调用一次。所以它的工作原理如下:
iBeacon对设备可见。
didEnterRegion
和didDetermineStateForRegion
被调用。
当iBeacon对设备可见时,不再调用上述方法。
设备不再显示iBeacon。
didExitRegion
和didDetermineStateForRegion
被调用。
当iBeacon对设备不可见时,不再调用上述方法。
转到第1步。
如果您希望每秒拨打一次电话,并显示所有正在查看的iBeacon列表,请使用测距示例代码here.