1

この呼び出し操作を管理するサービスを作成するために、特定の時間間隔 (たとえば、30 秒ごとに取得) でユーザーの現在の場所を取得したいと考えています。特定の時間間隔で getLastKnownLocation を呼び出すことは問題ありませんが、毎回同じ位置情報が得られます。アプリを実行して車で運転を開始しましたが、何も変わりませんでした。

LocationListener を実装して onLocationChanged を使用すると、今回は以下のようにロケーション マネージャーを設定しても特定の時間間隔が機能しません。

_locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, (1 * 20 * 1000), 1, this); // recall in every 20 seconds or distance between 200 meters

場所を変更しても常に同じ場所になるのはなぜですか?

4

1 に答える 1

0

基準を設定していないか、プロバイダーが悪い可能性があります。マニフェストに必要なアクセス許可を設定することを覚えていますか?

これを使用して、場所の更新をリクエストできます。

// Get best providers and set criteria
LocationManager lm;
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
String towers = lm.getBestProvider(crit, false);

// Set provider and update interval
lm.requestLocationUpdates(towers, 5000, 20, this); // minimum 5 seconds, 20 meters

requestLocationUpdates で設定された時間間隔は最小であり、正確ではないことに注意してください。

最後の既知の場所を取得するには:

LocationManager locationManager = ((LocationManager) getSystemService(Context.LOCATION_SERVICE));
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

経度と緯度を取得するには:

location.getLatitude();
location.getLongitude(); 

これは私にとってはうまくいきます。

于 2012-11-14T09:07:56.483 に答える