2

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); 

            }
4

1 に答える 1

2

これらのメソッドは、状態が変化するたびに1 回だけ呼び出されます。したがって、次のように機能します。

  1. iBeacon がデバイスから見えるようになります。

  2. didEnterRegionそしてdidDetermineStateForRegion呼ばれる。

  3. iBeacon がデバイスに表示されている間は、上記のメソッドが呼び出されることはありません。

  4. iBeacon がデバイスから見えなくなります。

  5. didExitRegionそしてdidDetermineStateForRegion呼ばれる。

  6. iBeacon がデバイスに表示されていない間は、上記のメソッドが呼び出されることはありません。

  7. 手順 1 に進みます。

表示されているすべての iBeacon のリストを使用して 1 秒に 1 回呼び出しを取得する場合は、こちらのレンジング サンプル コードを使用してください。

于 2014-03-27T14:34:02.780 に答える