1
私は、現在の場所を返すべきコードを実装しました。android onLocationChangedはまだ呼び出されていません
まずコード:
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) {}
}
問題は 'しばらく' ステートメント上のすべてのstoppsということです。私はonLocationChanged()何も起こりませんの最初の行に、この設定ブレークポイントをデバッグしようとしましたが、Logcatは次のようにいくつかのログを見せていたとき:
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
任意のアイデア?
私は場所を取得するスレッドを待っていた後、結果を返します。私は別のスレッドにrequestLocationUpdates()を移動する必要がありますか? – Seraphis
私はそれをルーパーと別のスレッドに移動しました。今それは働いている。更新プログラムの削除にはまだ問題があります。 GPSアイコンがあまりにも遅く消えています。理由を知らない。とにかく、ありがとうございます:-) – Seraphis