2017-12-20 13 views
10

私は、間隔および変位ベースの更新のためにGoogleApiClientを使用して、バックグラウンドの位置更新について作業し、テストしています。数日間のテストと分析で、私が期待していなかった出力のバリエーションをいくつか考え出しました。背景Google APIを使用した位置情報の更新 - 融合位置提供者が正確でない

  1. 間隔ベースの更新のためのsetIntervalsetFastestIntervalを使用している間は、私が15分最速間隔として10分、私は更新を取得しています時間の90%として間隔を設定していると言います期待される間隔(10〜15分)で。しかし時には、アップデートには指定された間隔よりもずっと長い時間がかかることに気付きました。違いは約30分と60分です。その違いは何かについてのアイデアは何ですか?

  2. 距離ベースの更新のためのsetMinimumDisplacementを使用している間は、私だけ停留点(上200メートル、私は更新を取得していますよう変位を設定していると言っている間、それはあっても、更新を与えるものではありません旅行それは200メートル以上です)。これは正常に動作しますか?

私は、バックグラウンドでの位置情報の更新のためにBroadcastReceiverに位置情報の更新を受け取るために、ロケーション要求のPendingIntentタイプを使用しています。

fusedLocationProviderClient.requestLocationUpdates(locationRequest, pendingIntent); 

テストしながら、場所サービスはモードがHIGH_ACCURACYた ON 場所でした。

+1

私は通常の動作を言うことはできませんが、私はあなたに似た問題を見ました。正直言って答えは@Mitesh Vanaliyaがドキュメントから引用したものです**すべてのロケーションリクエストはヒントとみなされ、より正確で、より速く/遅くなったロケーションを受け取ることがあります**。または、あなたが望むものを教えてもらうこともできますが、時にはそれをやりますが、最終的にはいつでも何をしたいのですか? – Gary99

+0

Googleの推奨する「FusedLocationApi」を使用しない場合は、古いLocationManagerを使用してより多くの制御を得ることができます。 [こちら](https://developer.android.com/guide/topics/location/strategies.html)は、その方法に関する情報です。 – Gary99

+0

私は 'LocationListener'のために行きたくありませんでした。なぜなら、アプリケーション終了時に終了するからです。私はアプリケーションが終了しても位置更新を取得したいので、私は 'FusedLocationProviderClient'の' requestLocationUpdates'の 'PendingIntent'バージョンに行きました。 'setInterval'から得られる更新は' setMinimumDisplacement'よりはるかに優れています。なぜなら、_setInterval_からの位置は_setMinimumDisplacement_よりも正確ですからです。 – Joshua

答えて

2

LocationRequest APIの適切な動作については、ドキュメントを参照してください。このドキュメントから

LocationRequest Api documentation

  • アプリケーションはLocationClientによって使用され、GPSなどの正確な位置ソースを、指定することはできません。実際には、複数のロケーションソース(プロバイダ)が稼働していて、複数のソースからの結果を1つのLocationオブジェクトに融合させることがあります。ACCESS_COARSE_LOCATIONではなく、ACCESS_FINE_LOCATIONのアプリケーションからのロケーションリクエストは自動的に緩やかな間隔で抑制されます。ロケーションオブジェクトは難読化され、粗いレベルの精度しか示されません。
  • すべての場所の要求がヒントとみなされ、そしてあなたがより多く/少なく正確な場所を受け取ることができる、そして速く/より遅く、より詳細な説明については

を要求したが、リンク上から完全なマニュアルをお読みください。

この説明が役立つと願っています。

+0

ありがとうございます。私はすでに、位置情報源と正確さに関するいくつかの情報を知っています。私は**の2番目のポイントについてのいくつかの情報を期待しています**のように、それは正常にどのように動作するのですか?それとももっとコードを実装する必要がありますか? – Joshua

関連する問題