Мониторинг Android-маяка во время определения дальности

В продолжение моего предыдущего вопроса здесь я больше не придерживаюсь подхода создания единого региона для всех маяков. Теперь я создаю регионы во время выполнения. Я сделал ранжирование первым. Ниже приведен код, который я пытаюсь реализовать.

public void onBeaconsDiscovered(Region region, final List<Beacon> beacons) { 
     for(int i =0;i<beacons.size();i++)
     { 
        Region r = new Region("RegionID", beacons.get(i).getProximityUUID(), beacons.get(i).getMajor(), beacons.get(i).getMinor()); 
        try { 
              beaconManager.startMonitoring(r); 
            } catch (RemoteException e) {
                e.printStackTrace(); 
            }
    } 
  } 

  public void onEnteredRegion(Region arg0, List<Beacon> arg1) {
         //Log Data in DB 
  }

  public void onExitedRegion(Region region) { 
     //Log Data in DB 
  }

Верен ли вышеупомянутый подход? Проблема в том, что иногда один и тот же маяк дважды входит в onEnteredRegion() без выхода. Я пытался поиграть с интервалом сканирования для переднего плана и фонового сканирования, но все не синхронизировано. Я использую SDK маяка Estimote для Android.


person yogeshhkumarr    schedule 03.06.2014    source источник
comment
Вам действительно не следует создавать большое количество регионов - вам это сойдет с рук с клиентами Android, но устройства iOS смогут искать только ограниченное количество регионов, поэтому ваш подход блокирует вашу систему только для Android. , практически без какой-либо выгоды. Что касается Android, весь пакет представляет собой просто произвольные данные, поэтому вы также можете назначить регион и основные / второстепенные части совместимым с iDevice способом, а не в основном несовместимой с iDevice схемой множества регионов, которую вы выбрали здесь .   -  person Chris Stratton    schedule 03.06.2014
comment
@ChrisStratton: проблема с созданием единого региона для всех маяков заключается в том, что я не получаю обратный вызов onExitedRegion(), если только все маяки этого региона не завершатся. И мы планируем протестировать более 500 маяков! Пожалуйста, дайте мне знать, если есть какой-либо другой подход, который более оптимизирован.   -  person yogeshhkumarr    schedule 04.06.2014
comment
В Android это полностью реализовано в коде, который вы контролируете, поэтому вы можете исправить это в исходном коде. Не используйте библиотеку поставщика, если она вызывает трудности. Но вы все равно можете не зависеть от выхода из региона.   -  person Chris Stratton    schedule 04.06.2014
comment
Я пытаюсь рассчитать среднюю продолжительность пребывания человека в регионе. Насколько я понимаю, я могу добиться этого, регистрируя время в области входа и выхода и вычисляя продолжительность. Это единственная причина, по которой я хочу слушать обратный вызов onExitedRegion. Поправьте меня, если мой подход неверен.   -  person yogeshhkumarr    schedule 04.06.2014


Ответы (1)


Проблема может быть очень простой. В вашем примере кода повторно используется один и тот же идентификатор региона "RegionID" для всех регионов. Пожалуйста, используйте разные.

person Wiktor Gworek    schedule 17.06.2014