Pergunta

Em continuação à minha pergunta anterior feita aqui, não estou mais seguindo a abordagem de criar uma região única para todos os beacons.Agora estou criando regiões em tempo de execução.Eu fiz a variação primeiro.Abaixo está o código que estou tentando implementar.

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 
  }

A abordagem mencionada acima está correta?O problema é que, às vezes, o mesmo farol entra duas vezes em onEnteredRegion(), sem sair.Tentei brincar com o intervalo de varredura para varredura de primeiro e segundo plano, mas as coisas não estão sincronizadas.estou usando Estimativa farol sdk para android.

Foi útil?

Solução

O problema pode ser muito simples.Seu exemplo de código está reutilizando o mesmo identificador de região "RegionID" para todas as regiões.Por favor, use diferentes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top