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