J'ai implémenté du code qui devrait renvoyer l'emplacement actuel.android onLocationChanged n'a jamais appelé
D'abord le code:
public static double[] getLocation(Context context) {
double[] result;
lm = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
MyLocationListener ll = new MyLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
while(!hasLocation) { }
result = ll.getResult();
return result;
}
private static class MyLocationListener implements LocationListener {
double[] result = new double[2];
public double[] getResult() {
return result;
}
@Override
public void onLocationChanged(Location location) {
if(location.getAccuracy() != 0.0 && location.getAccuracy() < 100) {
result[0] = location.getLatitude();
result[1] = location.getLongitude();
hasLocation = true;
lm.removeUpdates(this);
}
}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
}
Le problème est que tous les Stopps sur déclaration 'tout'. Quand j'ai essayé de déboguer ce point d'arrêt de réglage sur la première ligne OnLocationChanged() rien ne se passe, mais Logcat montrait des journaux comme:
loc_eng_report_position: vertical_accuracy = 64.000000
DEBUG/libloc(1292): date:2011-08-11, time:10:51:03.372, raw_sec=1313052663, raw_sec2=1313052663,raw_msec=1313052663372
Toutes les idées?
Je voulais attendre avec le fil pour obtenir l'emplacement et après cela renvoyer le résultat. Dois-je déplacer requestLocationUpdates() pour séparer le thread? – Seraphis
Ok, je l'ai déplacé pour séparer le fil avec Looper. Maintenant ça marche. Il y a toujours un problème avec la suppression des mises à jour. L'icône GPS disparaît trop lentement. Je ne sais pas pourquoi. En tout cas, merci pour vos suggestions :-) – Seraphis