Questa è una domanda che è stata posta numerose volte ma non sono riuscito a trovare una soluzione che funzioni sempre.onLocationChanged non chiamato su alcuni dispositivi
Sto sviluppando un'applicazione utilizzando il provider di posizione Fused. Nel metodo onConnected()
, sto richiedendo aggiornamenti di posizione e la logica dell'applicazione verrà avviata una volta generata una correzione di posizione e viene chiamato onLocationChanged()
. (Si prega di fare riferimento al mio codice qui sotto).
ProblemaonLocationChanged()
il metodo non viene mai chiamato su alcuni dispositivi. Io uso un Samsung Tab 2 e un Samsung Galaxy Grand per i test. Questo codice funziona perfettamente sulla scheda 2, ma non funziona su Grand. Non funziona, voglio dire che lo locationClient
viene collegato ma non viene mai chiamato onLocationChanged()
.
In precedenza, ho utilizzato il responsabile della posizione per ottenere la posizione e in tale implementazione, si è verificato lo stesso problema. Quindi, ho provato a implementare il fornitore di posizione fuso, ma ho ancora lo stesso problema.
Qualcuno può aiutarmi con questo problema? C'è qualcosa che mi manca qui?
public class MainActivity extends Activity implements GooglePlayServicesClient.ConnectionCallbacks, OnConnectionFailedListener, LocationListener {
LocationClient locationclient;
LocationRequest lr;
Location loc1;
static String address;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationclient = new LocationClient(this,this,this);
locationclient.connect();
}
@Override
public void onConnected(Bundle arg0) {
// TODO Auto-generated method stub
lr=LocationRequest.create();
lr.setInterval(100);
locationclient.requestLocationUpdates(lr, this);
Log.d("LocationClient","On Connected");
}
@Override
public void onDisconnected() {
// TODO Auto-generated method stub
locationclient.disconnect();
}
@Override
public void onConnectionFailed(ConnectionResult arg0) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location loc) {
// TODO Auto-generated method stub
// Application Logic
Log.d("LocationClient","Last Known Location LC:" + loc.getLatitude() + "," + loc.getLongitude());
}
}
Se onConnected() non verrà chiamato onConnectionFailed() dovrebbe essere attivato. Hai dato un'occhiata a ConnectionResult? –
onConnected() viene chiamato e la connessione viene stabilita. L'ho verificato su entrambi i dispositivi. All'interno di onConnected() richiedo aggiornamenti di posizione che quindi non portano a chiamare onLocationChanged. – Rohit
Hai trovato una soluzione o una soluzione alternativa? Sto affrontando lo stesso problema – gian1200