2

関数onLocationChangedを使用してユーザーの場所を特定します。これは、電話が移動するたびに発生するようにします。Android

関数が呼び出された正確なタイミングは?

私のコードは次のようになります。

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  
locationListener = new GPSLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

GPSLocationListener:

public class GPSLocationListener extends DroidGap implements LocationListener 
{
  @Override
  public void onLocationChanged(Location location) {
      AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
        alt_bld.setMessage("onLocationChanged");
        AlertDialog alert = alt_bld.create();
        alert.show();
  }

@Override
public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}
}

アラートonLocationChangedは表示されません。

4

4 に答える 4

2

このリンクによると: http ://developer.android.com/reference/android/location/LocationListener.html#onLocationChanged(android.location.Location )場所が変更されるたびにメソッドが呼び出されます。

私の観察によると、その背後にはいくつかのロジックがあり、毎回変更されることはありません(たとえば、新しい場所が古い場所の近くにあり、精度が低い場合)。

編集:

「少しずつ動く」はせいぜいACCURACY_HIGHになります...これ以上正確にはなれないと思います。参照:http ://developer.android.com/reference/android/location/Criteria.html#ACCURACY_HIGH

編集2:ACCURACY_HIGHを使用するには、新しいCriteriaオブジェクトを作成し、セッター(setHorizontalAccuracy、...)を使用してから、次のように使用します

locationManager.requestLocationUpdates(locationManager.getBestProvider(locationCriteria, true), 1L, 2F, this);
于 2013-01-09T09:11:27.963 に答える
1

送信される引数によって異なります。
requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)

minTime- 位置の更新間の最小時間間隔(ミリ秒単位
)minDistance- 位置の更新間の最小距離(メートル単位)

ロケーションの更新は、LocationListenerコールバックによって受信されます

詳細については、こちらをご覧ください。

于 2013-01-09T09:17:44.433 に答える
0

のドキュメントから

requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)

パラメータに関してminTime

「通知の最小時間間隔(ミリ秒単位)。このフィールドは、電力を節約するためのヒントとしてのみ使用され、位置情報の更新間の実際の時間は、この値よりも大きい場合と小さい場合があります。」

また

public abstract void onLocationChanged (Location location)

Added in API level 1
Called when the location has changed.

There are no restrictions on the use of the supplied Location object.

Parameters
location    The new location, as a Location object.

これが問題になる場合は、一定の時間が経過していない場合は、コールバックメソッドの呼び出しを無視できます。

それがあなたを助けることを願っています

于 2013-01-09T09:14:54.583 に答える
0

場所が変更されたとき。新しい場所の詳細がgpsレシーバーによってキャプチャされたとき、メソッド

onLocationChanged(Location location)

自動的に呼び出されます。

于 2013-01-09T09:59:50.360 に答える