2017-06-01 3 views
1

私は位置管理のためにFusedLocationApiを使用する位置認識型のAndroidアプリを持っています。なぜAndroidは「新鮮な」場所の後に「古い」場所を返すのですか?

アプリがその場所を取得する必要があるときは、最初に最後の既知の場所を取得します。場所が1分以上経過していない場合はそれを使用し、それ以外の場合は新しい場所の更新を待ちます。

ここで、場所AからBに移動すると、次のような動作が観察されます。私がBに達すると、アプリはBの場所を報告します。これは素晴らしいことであり、期待される動作です。しかし、時には、アプリはまもなくその後、Aの位置を報告します。これは、現在の位置がBに既に更新されているため、どのようにすることができますか?

答えて

0

Bに達すると、最後の場所が「B」と表示されます ただし、ここで頻繁に場所を更新してください。場所のリクエストを設定できます。

LocationRequest locationRequest locationRequest = new LocationRequest(); 
     locationRequest.setInterval("4000"); //Interval 
     locationRequest.setFastestInterval("4000");//Fast Interval 
     locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
+0

実際は私のコードは上記のようです。私が理解していないことは、アプリが最初にBに正しく更新され、突然Aに戻ってしまうことです。 –

+0

2つの場所の間の距離は何ですか? ?私はそれが十分に遠いのですか? –

+0

約4 km、約5分で覆われています。 –

0

FusedLocationAPIの結果であるクラスLocationには、getTime()関数があります。場所の更新を受け取ると、getTime関数を使用して以前のものと比較して、最近のものを表示することができます。

0

これらのパラメータを賢明に使用してください。バッテリーとアプリのパフォーマンスに影響を与えます。

//update interval 
setInterval(UPDATE_INTERVAL); 
//Fastest interval 
setFastestInterval(FASTEST_INTERVAL); 
//Accuracy required 
setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
//Smallest variation in between locations 
setSmallestDisplacement(MIN_DISTANCE_CHANGE_FOR_UPDATES); 

あなたがsetSmallestDisplacementを設定していないかもしれないとして、それが戻って検索する同じ古い場所が発生することがあります。

関連する問題