3

以下のコードを使用しましたが、同じ場所に座っていても onLocationChanged が呼び出されることを除いて、すべて正常に動作しています。

右に動いているときだけ呼び出されるべきだと思いましたか?

一定の距離を移動した後にのみ場所を取得したい。

私を助けてください。前もって感謝します。

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    locationMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    locationMgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,
    this);


}

    @Override
       public void onLocationChanged(Location location) {
           Toast.makeText(this, "Working!", Toast.LENGTH_SHORT).show();
                    if (location != null) {
                            double lat = location.getLatitude();
                            double lng = location.getLongitude();

                            String Text = "Latitud = " + lat + "\nLongitud = " +
     lng;

      Toast.makeText(getBaseContext(),Text,Toast.LENGTH_SHORT).show();
                    }
           }
4

2 に答える 2

9

可能な限り短い間隔/距離で位置情報の更新をリクエストしています

locationMgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,
this);

これは、ドキュメントがこれらのパラメーターについて述べていることです

" 位置情報の更新間隔は、minTime パラメータを使用して制御できます。位置情報の更新間の経過時間は、minTime よりも短くなることはありませんが、位置情報プロバイダーの実装や他のアプリケーションから要求された更新間隔によっては、それ以上になることもあります。"

minDistance パラメーターを使用して、位置情報の更新頻度を制御することもできます。0 より大きい場合、ロケーション プロバイダーは、ロケーションが minDistance メートル以上変化し、かつ minTime ミリ秒以上経過した場合にのみ、アプリケーションに更新を送信します。ただし、ロケーション プロバイダーが minDistance パラメーターを使用して電力を節約することはより困難であるため、バッテリー寿命を節約するための主要なツールとして minTime を使用する必要があります。

個人的には、アプリで 10 秒と 10 メートルの minTime を使用しています

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000,
                10, locationListener);
于 2013-01-28T19:12:51.000 に答える
4

ネットワークの場所は、あなたが思っているほど正確ではありません。したがって、センサーによって返される結果は変動する可能性があります。これは、衛星との直接の見通し線がないと GPS 信号が弱くなり、可視衛星の数も精度に影響することを考えると、なおさらです。これは、携帯電話基地局の信号強度と可視ワイヤレス ネットワークの数と SSID の三角測量によって位置が計算されるネットワーク プロバイダーの使用を開始するとさらに悪化します。これらはかなり変動する可能性があるため、精度が大幅に低下します。平均化アルゴリズムはたくさんあり、そのような変動を最小限に抑えるためにヒューリスティックが採用されていますが、最終的には期待どおりに安定させることはできません。

単純な平均化と変動フィルタリングが役に立ちます。デバイスの加速度計に基づく補正を追加することも大いに役立ちますが、コードがより複雑になります。

于 2013-01-28T19:13:36.413 に答える