2017-11-01 20 views
0

私はAndroidのLocationManager及びその方法このようなrequestLocationUpdates使用しています:私はMINTIMEとminDistanceの条件は、位置更新のために満たされなければならないが、私は必要の両方を発見したようLocationManager requestLocationUpdates MINTIME OR minDistance

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 10, this); 

を3秒または10メートルごとに更新を取得します。

私はこのような2つの要求入れてみました:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 0, this); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 10, this); 

をしかし、それは動作しません、私は、このコードではなく、3秒ごとにすべての10メートルを更新します。

API19を使用しています。

答えて

1

requestLocationUpdate(上のドキュメント)は言う:場所の名前のプロバイダを使用して、更新、および保留中の意図について

requestLocationUpdates(文字列のプロバイダ、長いMINTIME、フロート minDistance、LocationListenerリスナー)

登録。

だから、locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 10, this);

のようにそれを呼び出すべきである。しかし、あなたが0にMINTIMEを設定した場合、それは最初の位置更新を受信したとき、それはあなたがあなたを変更するまで、それが呼び出されることはありません、一度呼び出されますminDistanceメーターの位置。私はそれが3秒未満で起こった場合でも、すべての10メートルを更新し、場合でも、3秒ごとに更新を取得する必要が@Matej とのディスカッションを1として

Documentation Link for Reference

EDIT

場所は、あなたが定期的にrequestLocationUpdates、あなたがTimerを使用する必要がありますしたい場合は10メートル以上

により変更とTimerTaskとを持っていませんでした走行3秒に1回

スケジュール(TimerTaskをタスク、長時間の遅延、長い期間)

スケジュール繰り返し固定遅延実行のために指定されたタスク、 は、指定された遅延の後に始まります。

+0

しかし、どのように3秒または10メートルごとに呼び出すことができますか?そこに方法がある必要があります – Matej

+0

しかし、これは場所が10メートルと3秒が経過した場合にのみ、場所の更新を私に送信します。たとえ3秒未満であっても10メートルごとに更新を取得し、10メートル以上変化しなくても3秒ごとに更新する必要があります。 – Matej

+0

3000ミリ秒に設定すると、3秒ごとに位置を取得するとは限りません。時間は多かれ少なかれ、最良のケースのシナリオです。いずれにしても10メートルの距離は正確なデータやTake TimerTaskのために十分であり、3秒ごとに要求します。 –

関連する問題