2011-06-22 11 views
9

LocationManager#requestLocationUpdatesでは、minTimeパラメータとminDistanceパラメータを渡すことができます。私はこれらの数字が何であるべきかを決めるのに苦労しているし、いくつかの指導を感謝することができます。どのようにしてrequestLocationUpdatesにどの間隔を使用するかを決めますか?

私たちのアプリは、ターンバイターンのナビゲーションアプリではありません。私はちょうど10の最も近い興味のあるポイントを示したいと思う。私は10番近いものを示しているので、少し古くなってしまうかもしれませんが、ユーザーが移動中の車に乗っていると、かなり頻繁に更新する必要があります。

多くの人々が漠然とした要求の同じ位置にいると想像しています。「データが古すぎないようにしたいが、バッテリーを無駄にしたくない」これらの曖昧な要件を具体的な数字に変えるにはどうしたらいいですか?

+1

これはここでの答えです - 今は[分が優先されます](http://stackoverflow.com/a/16753705/281545) - それはもはや無関係ではありません。 –

答えて

3
***<Edit>*** 
As of JellyBean, the criteria is (minTime & minDistance), so it has 
to satisfy both to return a location. 
***</Edit>*** 

あなたの問題に基づいて、minTimeパラメータは無関係です。

本当に心配する必要があるのは、minDistanceです。そのため、ユーザーが高速移動中の車両にいる場合、それは追いつかなくなります。

人が60MPHを運転している場合、約27メートル/秒で移動します。

このcriteraを考えると...私が使用することを言う:

MINTIMEは= 60000 // 90 //高速で移動する車両で、それはおよそ3秒に1回更新されます= 60秒毎
minDistanceを更新します

+0

あなたはどのように60000を思いついたのですか?なぜもっと多くはありませんか?以下? –

+0

かなりランダムです。 「正しい」数字はありませんが、1分に1回はバッテリーを殺さず、結果を目標にいくらか維持します。より重要な値は距離です。あなたが決定する必要があるのは、 - あなたのデータをリフレッシュさせる前に、車はどこまで旅行することができますか?マイル?半マイル?もっと?もっと少なく? – Matt

+1

申し訳ありませんが、これを編集する必要があります - 今すぐ[minTimeが優先されます](http://stackoverflow.com/a/16753705/281545) - これはもう無関係ではありません。 –

3

それはrequestLocationUpdates docs

にうまく説明されている通知または新しい 場所の周波数は MINTIMEと心を使用して制御することができます等価パラメータ。 minTimeが0より大きい場合、 LocationManagerは、電力を節約するために の間のminTimeミリ秒間、 を潜在的に休止する可能性があります。 minDistanceが0より大きい場合、 デバイスがminDistanceメーターで移動する場合、 ロケーションはブロードキャストされます。 に、できるだけ頻繁 として、通知を得るデバイスが が GPSや無線ラジオを保つことによってあまりにも多くの電力を消費しないように バックグラウンドサービスが十分に高い MINTIMEの設定について 注意しなければならない0に両方のパラメータを設定しますすべての の時間に。特に、 60000ms未満の値は推奨されません。

+0

"60000ms未満の値は推奨されません"フォアグラウンドサービスまたはバックグラウンドサービスの場合は本当ですか? (私はバックグラウンドサービスではありません)最大の頻度を必要としないフォアグラウンドサービスの価値は、私のようにどのようにすべきですか? –

+0

はバックグラウンドサービスとフォアグラウンドサービスの両方に対応しています。 – Sujit

+1

ドキュメントの見積もりは有効ではなくなりました –

1

最初に更新間隔を少し大きくして場所を取得することをお勧めします。次に、連続した場所の間の距離が、より近い場所を区別するための最小距離よりも大きいかどうかを確認し、要求の更新間隔をより低い値に変更します。同様に、この低い間隔で計算した距離がはるかに小さい場合は、ユーザーが車両を通過していないことを示し、間隔をより大きな値に更新します。 間隔を更新するには、以前のリスナーを登録解除してから、新しい値で再登録する必要があります。

0

手元の問題については、PASSIVE_PROVIDERをご覧ください。基本的には、他のアプリからリクエストがあった場合にアップデートを入手するのに役立ちます。したがって、これを他のプロバイダと組み合わせて使用​​することができます。

関連する問題