6

GPS を使用するアプリケーションを開発しようとしています。より迅速に修正するために、XTRA データと時間参照を GPS に挿入したいと考えています。私のコードは次のとおりです。

Bundle bundle = new Bundle();
boolean xtraInjection=locationmanager.sendExtraCommand(LocationManager.GPS_PROVIDER,"force_xtra_injection",bundle);
boolean timeInjection=locationmanager.sendExtraCommand(LocationManager.GPS_PROVIDER,"force_time_injection",bundle);

インターネット接続がオンであろうとオフであろうと (携帯電話も WiFi もありません)、xtraInjection および timeInjection ブール値は常に true です。そのため、支援情報が GPS に適切に注入されているかどうかを検出できませんでした。

Wi-Fi 接続が有効になると、次のログ メッセージが表示されます (Wi-Fi がダウンしている場合はエラー メッセージは表示されません)。

I/app (  627): timeInjection:true
....
D/GpsLocationProvider(   96): NTP server returned: 1306322421969 (WedMay 25 13:20:21 GMT+02:00 2011) reference: 338139 certainty: 77 systemtime offset: 7162
D/lib_locapi( 96): loc_eng_inject_time, uncertainty = 77

対照的に、XTRA データに関連するログ メッセージはありません。XTRA データがまだ有効な場合、システムはそれを要求しませんか? 正常に注入されたかどうかを確認するにはどうすればよいですか?

これらのテストを行うために、支援データの削除も試みましたが、これがうまくいかないことはわかっています。

私のコード:

boolean reset=locationmanager.sendExtraCommand(LocationManager.GPS_PROVIDER, "delete_aiding_data", null);

ログ:

I/app (  627): reset:false
D/lib_locapi(   96): loc_eng_ioctl for aiding data deletion returned 0, 1 for success

GPS STATUS アプリケーションも試してみましたが、注入と削除の両方で結果は同じです。

つまり、問題がコードにあるのか、ドライバーの実装にあるのかわかりません。logcat 以外に、これらの問題に関する詳細情報を取得する方法はありますか? (デバイスをルート化できません)。

前もって感謝します

4

1 に答える 1

2

を見るとframeworks/base/services/java/com/android/server/location/GpsLocationProvider.java、これらのコマンドが常に true を返すことがわかります。

これを行うべき理由はほとんどなく、そうすべきでない理由がいくつかあります。

  • Android は、起動後にネットワークが最初に立ち上がったときに、時間と XTRA データを自動的に挿入します。GPS チップは修正があるたびに内部クロックを GPS と同期するため、時間を再注入する必要はありません。GPS チップは、必要に応じて新しい XTRA データを自動的に要求します。
  • XTRA は、Qualcomm GPS チップセットにのみ適用されます。他のベンダーにも同等のサービスがありますが、これらは XTRA のように GpsLocationProvider で公開されていません。
  • インターネット接続が利用できる可能性があります。この場合、GPS は必要に応じて SUPL サーバーからエフェメリスをダウンロードし、それが不可能な場合にのみ XTRA にフォールバックします。
于 2011-05-25T16:04:01.970 に答える