4

ユーザーの場所を30分ごとに記録し、ユーザーが地図上のすべての場所を表示できるようにするアプリケーション(教育目的)を作成しています。更新が 30 分を超えないようにしたいのですが、そうです。

これは私が呼び出す方法ですrequestLocationUpdates

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,  30 * 60 * 1000,  0, pe);

現在、ドキュメントには次のように明確に記載されています。

位置更新間の経過時間が minTime 未満になることはありません

しかし、ここで SO が別の方法で述べているいくつかの回答を見ました (たとえば、この回答)。

GPS から利用可能な場合はいつでも更新を取得しているようです。GPS アイコンがオフになることはなく、更新レートは 1 更新/秒を超えます。だから私はここに2つの質問があります:

  1. このminTimeパラメーターは、ヒントとしても目的を果たしません (30 分の更新レートへのヒントは、1 秒以上の更新につながります...)。では、それは何をしますか?
  2. それを行う他の方法はありますか?バッテリーの消耗が早すぎるため、GPS を常に有効にしたくありません。30 分ごとに繰り返すアラームをスケジュールして、電話をかけることはできますrequestSingleUpdateか?
4

2 に答える 2

5

minTime パラメーターは、ヒントとしても、その目的を果たしません (30 分の更新レートへのヒントは、1 秒以上の更新につながります...)。では、それは何をしますか?

Jellybean以降、デバイスはminTimeパラメーターを監視する必要があるため、目的があります(現在)。

それを行う他の方法はありますか?バッテリーの消耗が早すぎるため、GPS を常に有効にしたくありません。30 分ごとに繰り返すアラームをスケジュールして、requestSingleUpdate を呼び出すことはできますか?

はい、ハンドラーを使用して、requestSingleUpdate()30 分ごとに 1 つの更新を要求します。

以前の質問でこれに取り組んだことがあります。その回答のコードが役立つかどうか、また解決できない質問がある場合はお知らせください。

于 2012-11-25T20:33:18.597 に答える
1

2 番目のパラメーターであるメートル単位の最小距離差はゼロに設定され、一定の更新が行われます。分単位で目的の期間にタイマー+ハンドラー内でrequestSingleUpdateを使用することをお勧めします。

于 2016-01-05T13:26:09.007 に答える