0

これらの変数があり、onResume メソッドで次の呼び出しを行います。

  private Location userLocation;
  private GeoPoint point;
  private LocationManager manager;
  private LocationListener listener = new LocationListenerC();

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 25, locationListener); 

しかし、このアプリを Android エミュレーターで実行すると、ユーザーの位置が 10 秒ごとに更新されません。誰でも助けることができますか?

4

3 に答える 3

2

このパラメーターは、ミリ秒ごとmindTimeに更新を受信するという意味ではありません。これは、更新をミリ秒未満で頻繁に受信しないことを意味しますが、更新をいつ取得するかは指定しません。に 10 秒ごとに提供される新しい場所がない場合は、単に提供されません。新しい場所がある場合にのみ、更新を受け取ります。 minTimeminTimeLocationManager

あなたも使ってminDistanceいます。25デバイスが少なくとも 25 メートル移動しない限り、新しい更新を受信しないことを意味します。エミュレーターは動かないので、このパラメーターを に設定します0(つまり、更新はユーザーが移動したかどうかに依存しません)。

更新率は、ユーザーの場所に大きく依存します。たとえば、ユーザーが建物の中にいる場合、GPS/ネットワーク プロバイダーが衛星/基地局から更新を受信するのに時間がかかる場合があります。そのため、更新の間隔が長くなる可能性があります。ただし、ユーザーが屋外にいて、デバイスの信号が良好な場合は、更新が非常に頻繁になる可能性があります (ただし、10 秒ごとに 1 つしか取得できません)。

10 秒ごとに場所を取得したい場合は、10 秒getLastKnownLocationごとに呼び出すことができます。ただし、プロバイダーからの更新が行われていない場合、場所は同じである可能性があります。

于 2012-11-24T22:26:41.837 に答える
0

条件は、時間は 10 (最小) 秒で、距離は 25 (最小) メートルでなければならないと思います。

参照:
http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates%28java.lang.String,%20long,%20float,%20android.location.LocationListener%29

minDistance パラメーターを使用して、位置情報の更新頻度を制御することもできます。0 より大きい場合、ロケーション プロバイダーは、ロケーションが minDistance メートル以上変化し、かつ minTime ミリ秒以上経過した場合にのみ、アプリケーションに更新を送信します。ただし、ロケーション プロバイダーが minDistance パラメーターを使用して電力を節約することはより困難であるため、バッテリー寿命を節約するための主要なツールとして minTime を使用する必要があります。

于 2012-11-24T22:19:43.810 に答える
0

以下のように、次のことを行います

   private Location userLocation;
   private GeoPoint point;
   private LocationManager manager;
   private LocationListener listener = new LocationListenerC();

    //Change **locationManager** to **manager** 
    // and **locationListener** to **listener**  in the follwing line
   manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 25, listener); 
于 2012-11-24T23:15:01.363 に答える