30秒の短い間隔(またはそれ以下-最初の修正を取得した場合)でGPS更新をリッスンするアプリを想像してみてください。聞くまでに少し時間があります。たとえば、10〜20秒です。問題は、GPSが最初の30秒間に修正を見つけられなかった場合、2番目の間隔で「最初から開始」して再度リッスンするときに、修正を取得できるように最初の間隔で受信したデータを何らかの方法で使用できるかどうかです。より簡単/より速く?
2 に答える
以前のGPS実行に依存する可能性のある修正を取得する能力に影響を与える2つの項目があります。
1)GPSの支援情報
2)表示されているGPS衛星のGPSエンジンによって維持される追跡情報
#1の場合:
LocationListenerを介してAndroidアプリで取得するGPS位置データの場合、ほとんどのAndroid電話は、gpsOneXTRAと呼ばれるQualcommによって作成されたものを使用します。
これは一種の「アシストGPS」ソリューションと見なされますが、IP接続を介して、通常はセルネットワークの外部にあるサーバーからアシスト情報を取得します。
gpsOneXTRAアシスタンスデータは最大7日間有効ですが、GPS品質はアシスタンスデータの経過とともに低下するため、一部のデバイスはこのデータをより頻繁に更新します(たとえば、US Sprint Androidデバイスは約48時間ごとに更新されます)。
したがって、支援データがしばらく取得されていないと仮定すると、支援データは最初の30秒間に最大1回取得されます。次の30秒間、この支援データは再度取得されません。
2010 Sprint App Developers ConferenceのgpsOneXTRAの詳細については、スライド12の19:35分をご覧ください:http: //developer.sprint.com/site/global/events/pastevents/2010devcon/videos/sprint_enabling_location_services.jsp
#2の場合:
電話OEMによって実装された内部GPSエンジンは、視界にある衛星を追跡します。これは、デバイスのGPS感度に応じて、過去のGPS観測にいくらか依存します。したがって、GPSリスニングセッション間の10〜20秒の遅延の影響は、デバイスのGPS感度に依存します。
ほとんどの「高感度」GPSチップセットは、屋内の障害物に応じて、コールドスタートからGPS修正を数秒以内にすばやく取得できるため(つまり、以前のGPS観測がない場合)、10〜20秒のダウンタイムは実際にはありません。修正を取得する能力に影響を与えることはありません。例はSiRFStarIVです。
http://www.sirf.com/products/25/sirfstariv-gsd4t
...最大-160dBmのGPS修正を取得できます。また、追跡エンジンは-163dBmまで感度が高いため、初期修正が必要になると、信号が悪化しても追跡を継続できることに注意してください。
これは通常、GPSを屋外で即座に修正し、空をはっきりと見ることができます。また、屋内で数秒で大きな障害物(レンガ、金属、コンクリートなど)を使用せずに修正を行うのに十分です。携帯電話のGPSアンテナがひどい場合やGPSOEMソフトウェアが実際に台無しになっている場合を除いて(これは可能です)、高感度GPSチップセットを搭載した最新のAndroid携帯電話では、10〜20秒の遅延が取得能力に大きな影響を与えることはありません。修正。
Mike LockwoodのGPSTestアプリは、携帯電話が現在認識できる衛星を確認するのに適しています。アプリでGPS観測を開始および停止できるため、GPS衛星を追跡する携帯電話の機能に遅延がどのように影響するかを確認できます。 :
https://play.google.com/store/apps/details?id=com.android.gpstest
余談ですが:
Luisが言及した動作は、実際には、JellyBean4.1より前の多くのAndroidデバイスで広く見られるバグです。一部のデバイスは11回の修正を続けて実行し、その後休止します。その他のデバイスは、ロケーションリスナーのLocationManagerに渡されるminTimeパラメーターに関係なく、毎秒継続的にサンプリングします。
Androidチームとのこの問題の完全な議論はここにあります:
https://android-review.googlesource.com/#/c/34230/
新しいCTSVerifierテストがAndroid4.1JellyBeanに追加されました。これにより、JellyBean以降でこれが発生するのを防ぐことができます。
いくつかのデバイスでの私の経験では、新しい場所でonLocationChange()への呼び出しが1秒に1回11回受信されます。
更新間の時間をそれよりも小さい値(11秒)に設定すると、GPSは、中断することなく、更新された位置で毎秒onLocationChange()を継続的に呼び出します。
更新間の時間をそれよりも大きい値(数分)に設定すると、onLocationChange()を11回呼び出し続けてから数秒間停止し、その後onLocationChange()を11回呼び出して再起動します。 。onFirstFix()を再度呼び出すことはなく、衛星信号の取得に時間遅延はありません。
更新間の時間を時間単位の値に設定しようとしたことは一度もないので、このためにはわかりません。
幸運を。