2017-08-15 2 views
0

Je voudrais trouver l'utilisateur en cliquant sur un bouton. Par conséquent, j'utilise ce code:Android requestLocationMises à jour non correctement renseignées

lm = getSystemService(LocationManager.class); 
provider = LocationManager.GPS_PROVIDER; 
listener = new LocationListener() { 
@Override 
public void onLocationChanged(Location location) { 
    Log.e("UPDATE","UPDATING LOCATION"); 
} 
@Override 
public void onStatusChanged(String s, int i, Bundle bundle) { 

} 
@Override 
public void onProviderEnabled(String s) { 

} 
@Override 
public void onProviderDisabled(String s) { 

} 
}; 

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener); 

La méthode requestLocationUpdates est appelée, mais la méthode OnLocationChanged est seulement appelé à quelques reprises. Le GPS est activé et les autorisations sont accordées.

Avez-vous une idée pourquoi onLocationChanged n'est pas toujours appelé? J'ai également vérifié getLastKnownLocation qui est parfois faux après avoir appelé requestLocationUpdates.

+0

Vérifiez ce qu'il dit ici pour voir si cela aide: https://stackoverflow.com/a/8600896/3965050 –

+0

J'ai essayé d'enregistrer l'écouteur dans requestLocationUpdates. Maintenant, il n'est jamais appelé. LocationManager est également vérifié (il n'est pas nul). – JavaForAndroid

+0

non, mais ce que je voulais dire, c'est cette partie: onLocationChanged() sera appelée si la mise à jour de l'emplacement actuel ne correspond pas au dernier emplacement connu. –

Répondre

0

Je pense que onLocationChanged() n'est pas supposé être appelé toujours, il ne sera appelé que si un emplacement change.

0

J'ai changé la méthode de demande à lm.requestSingleUpdate(criteria, listener,null); qui fonctionne parfaitement ainsi que requestLocationUpdates avec des critères.

Semble être un problème avec le fournisseur.