2

私には 2 つの問題があります。1 つ目は、アドレスを取得して編集テキストに出力する String Builder があることです。

  Geocoder mGC = new Geocoder(context,Locale.getDefault());
    address = mGC.getFromLocation(lat, lng, 1);

    if (address !=null){
     Address currentAddr = address.get(0);
     mSB = new StringBuilder();
     for (int i=0; i<currentAddr.getMaxAddressLineIndex(); i++){
     mSB.append(currentAddr.getAddressLine(i)).append(", ");
    }
   outputText.setText(mSB.toString());

}

問題は、行がランダムにaddress = mGC.getFromLocation(lat, lng, 1);null ポインター例外を返すことです。数日間動作することもありますが、突然 null ポインター例外が発生します。誰かが理由を知っていますか?

また、私の 2 番目の問題は、GPS の修正に時間がかかることです。GPS 衛星を使用しています。最初にネットワークから提供された情報を使用し、次に GPS 衛星を使用してより迅速に修正する方法はありますか?

4

2 に答える 2

1

2番目の問題について:2つのロケーションリスナーが必要です。1つはネットワーク用で、もう1つはGPS用です。次に、各リスナーでonLocationChangedを使用してロジックを実行する必要があります。この場合、最初にネットワークロケーションを使用し、GPSの更新を取得したら、代わりにそのロケーションを使用します。

于 2011-09-25T05:33:43.267 に答える
1

最初の問題については、与えられた緯度経度に対して住所がない可能性があります。また、このジオコーダー サービスは、インターネットがアクティブである必要があります。

GPS は常に修正に時間がかかります。コールド スタートの場合は約 20 分です。ウォーム スタートの場合は、20 秒から 1 分です。ご覧のとおり、スペクトル全体をスキャンして衛星の可視性の兆候を探し、特にドップラー シフトを計算します。電話でインターネットに接続している場合は、AGPS サーバーが電話を支援するため、この時間が短縮されます。NetworkProvider は非常に不正確です。これは、それらをジャグリングする最良の方法です。

于 2011-09-25T06:45:44.847 に答える