Nella nostra app abbiamo usato il Fused Location Provider (FLP) per tracciare la posizione. Abbiamo notato che occasionalmente l'app può entrare in uno stato in cui il callback della posizione non viene più chiamato. L'app in questione viene utilizzata principalmente su due tablet (un Nexus 7 e LG G-pad 8.3). Abbiamo visto che il problema si verifica su entrambi i dispositivi. In generale, il ripristino del dispositivo sembra alleviare il problema. Crediamo di seguire la maggior parte delle migliori pratiche per l'utilizzo del FLP. Ma nel caso in cui mettiamo insieme questo codice di esempio che illustra come utilizziamo il FLP.Fuse Location Provider - onLocationChanged smette di chiamarsi
Prendi un client API di Google e chiamare connettersi:
m_googleApiClient = builder
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
m_googleApiClient.connect()
Una volta collegati iniziamo ad ascoltare per le richiamate posizione:
@Override
public void onConnected(Bundle bundle) {
m_fusedLocationProviderApi.requestLocationUpdates(m_googleApiClient, m_locationRequest, this);
}
la richiesta di posizione è simile al seguente:
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
locationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
Quindi implementiamo la richiamata in questo modo:
@Override
public void onLocationChanged(Location location) {
// set location member var and record timestamp.
}
Quando si verificano i problemi, non sembra che si ottengano richiami di errore. Abbiamo provato a chiamare reset() sul client API di Google quando rileviamo che non abbiamo ricevuto un GPS da molto tempo. Monitoriamo anche la disponibilità della posizione utilizzando un timer ogni 2 secondi (utilizzando getLocationAvailability). In genere, rileviamo che il ripristino del dispositivo da parte dell'utente (accensione, spegnimento) risolve il problema.
Le nostre domande sono:
- chiunque altro ha notato questo problema con la FLP?
- C'è altro che possiamo fare per risolvere il problema a meno che l'utente non sia resettato? Rimuovere rimuovere l'aggiunta di aggiornamenti di posizione aiuto?
- C'è più informazioni che possiamo/dovremmo raccogliere per diagnosticare il problema?
Sto avendo lo stesso problema esatto. Quale versione di Google Play Services stai utilizzando e quali versioni del sistema operativo disponi sui dispositivi poiché mi chiedo se ciò faccia la differenza? –
Recentemente ho iniziato a usare 9.2.1 e non ho ancora visto il problema (incrociamo le dita). – noahd
Ho ricevuto esattamente lo stesso problema di recente. Hai visto questo problema da quando aggiorna la tua versione del servizio Google Play. Grazie. –