2

Androidプラットフォームでの低速GPS信号取得をどのように改善しますか?

このオープンソースコードに基づいて単純なGPSロガーをテストしています。動作しているように見えますが、最初に信号を取得してGPS座標の表示を開始するまでに最大10〜15分かかる場合があります。ただし、同じデバイスでGoogleマップアプリを実行すると、ほぼ瞬時に信号を取得しているように見えます(リアルタイムでどの方向を向いているかを検出することもできます)が、GPSロガーサービスは信号を見つけることができないと言っています。

標準のGPSシステムサービスが永遠にかかるのに、なぜGoogleマップはGPS信号の取得が非常に速いのですか?

GPSサービスを開始するために私が持っている特定のコードは次のとおりです。

private void startLoggerService() {
    lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationListener = new MyLocationListener();
    lm.requestLocationUpdates(
        LocationManager.GPS_PROVIDER, 
        2000, 
        1,
        locationListener);
}
4

3 に答える 3

8

位置データを使用する場合は、次の点に注意し、確実に考慮する必要があります。

  • GPSセンサーだけに頼らないでください。GPSは潜在的に最も正確な結果をもたらす可能性がありますが、それは比較的遅く、かなりのバッテリー消費です。代わりに、ネットワークプロバイダーに位置情報の更新も要求しますLocationManager.NETWORK_PROVIDER。ほとんどの場合、これによりアプリで使用するのに十分な精度の結果が得られます(私がプレイしたほとんどのデバイスでは、最悪の場合の精度は約60〜65mになるようです)が、さらに重要なのは、はるかに高速です。GPSの場合と同様に、ユーザーはシステム設定で機能を自分で有効または無効にできることに注意してください。詳細については、「ロケーションマネージャの使用」を参照してください。
  • 場所の更新が必要になる頻度を考えてください。可能であれば、継続的な更新を防ぎ(すぐにバッテリーを消耗します)、必要なデータを受信したらすぐにセンサーを解放します。また、場所をある程度キャッシュすることをお勧めします。完全に正確でなくても、ユーザーはすぐにフィードバックを受け取ります。これを、タイムスタンプを考慮したロジックと組み合わせることができる可能性があります。
  • AndroidDeveloperWebサイトですでに利用可能なリソースを使用してください。たとえば、読む価値のあるロケーション戦略に関するトピックがあります。もう1つの優れたリソースは、 RetoMeierによるブログ投稿と彼のAndroidProtipsforLocationを実装する彼のオープンソースプロジェクトです。時間がある場合は、位置情報ベース/位置情報対応のAndroidアプリのベストプラクティスについて説明している彼のGoogle I /O2011プレゼンテーションもご覧ください。

ちなみに、あなたが向いている方向のリアルタイムの表示は場所とは関係ありませんが、磁場センサー(読み取り:デジタルコンパス)またはジャイロスコープのいずれかから得られます。どちらも、位置ではなく、デバイスの向きを扱います。

于 2012-07-18T22:17:29.463 に答える
2

コード内の1は、デバイスが1メートル移動した場合にのみプロバイダーが位置情報をブロードキャストすることを意味します。これを0に設定してみてください。

APIドキュメントには次のように記載されています。

「通知の頻度は、minTimeパラメータとminDistanceパラメータを使用して制御できます。minTimeが0より大きい場合、LocationManagerは、電力を節約するために、ロケーションの更新の間にminTimeミリ秒の間休止する可能性があります。minDistanceが0より大きい場合、ロケーションはブロードキャストされるだけです。デバイスがminDistanceメーターで移動する場合。通知をできるだけ頻繁に取得するには、両方のパラメーターを0に設定します。」

于 2012-07-18T19:33:11.740 に答える
0

グーグルマップがあなたの方向を示している場合、それはGPS修正を使用している必要があります。Googleマップは、 Location.getLastKnownLocationを使用して取得できる最新のgps修正を使用している必要があります。おそらく、その場所が古すぎない場合、Googleマップはそれが何もないよりもはるかに優れていると判断し、新しいGPS修正を待つ間それを表示します。

屋内にいるときは、GPSの修正が非常に遅くなるか、まったく行われないことがよくあります。あなたが開発するとき、あなたはGPS修正を取得しようとしていると思いますか?起き上がって外に出なければならないかもしれません。

多くの電話はかなりお粗末なGPS受信機を持っています。澄んだ屋外の空でも、私は最初のGPS修正を取得するのに何分もかかる電話を所有しています。それはひどくてぼったくりですが、それは本当です。

于 2012-07-19T13:40:02.520 に答える