0

移動距離の測定に GPS を使用しました。問題は、GPS が位置の変更を長時間更新しないことがあることです。

これに対する解決策はありますか?

    locationListen = new LocationListener() {

        public void onLocationChanged(Location currentLocation) {
            if (prevLocation != null){
                test = currentLocation.distanceTo(prevLocation);
                distance+=test;
            }
            prevLocation = currentLocation;

        }

        public void onStatusChanged(String provider, int status, Bundle b) {
            switch (status) {
            case LocationProvider.OUT_OF_SERVICE:
                Toast.makeText(MainActivity.this,
                        "Status Changed: Out of Service " + provider,
                        Toast.LENGTH_SHORT).show();
                break;
            case LocationProvider.TEMPORARILY_UNAVAILABLE:
                Toast.makeText(
                        MainActivity.this,
                        "Status Changed: Temporarily Unavailable "
                                + provider, Toast.LENGTH_SHORT).show();
                break;
            case LocationProvider.AVAILABLE:
                Toast.makeText(MainActivity.this,
                        "Status Changed: Available " + provider,
                        Toast.LENGTH_SHORT).show();
                break;
            }
        }

        public void onProviderDisabled(String s) {
        }

        public void onProviderEnabled(String s) {
        }
    };

    startOperation.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View but) {
            if (startOperation.getText().equals("Start Calculating Fare")) {
                mHandler.post(run);
                myManager.requestLocationUpdates(
                                LocationManager.GPS_PROVIDER, 1000, 10,
                                locationListen);
                startOperation.setText("Stop the calculations");
            } else {
                mHandler.removeCallbacks(run);
                myManager.removeUpdates(locationListen);
                finalInfos();
            }
        }
    });

ロケーションリスナーの私のコード。GPSを使用して更新するだけです。私が言っているように、GPSは場所を検出するには長すぎることがあります

4

1 に答える 1

0

コードで GPS のみの位置情報プロバイダーを明示的に要求しています。これにより、Android は GPS のみに依存することになり、そのすべての欠点が生じます (たとえば、GPS を機能させるには空をきれいに表示する必要があります)。

より信頼性の高いデバイス追跡を取得するには、より信頼性が高く柔軟なロケーション戦略を使用し、変更された外部シナリオ (屋内/屋外など) に応じて現在のロケーション プロバイダーを変更する必要があります。さらに良いことに、さまざまなロケーション プロバイダーのセット全体を同時に使用できます (つまり、「ハイブリッド」ポジショニング システム)。

これらの以前に回答された SO の質問を見てください。

同時に複数のロケーション プロバイダー

複数のプロバイダーに requestLocationUpdates を使用する

そして、Android ドキュメントのこれらのページに:

http://developer.android.com/guide/topics/location/strategies.html

http://developer.android.com/training/basics/location/locationmanager.html

于 2012-10-02T08:21:46.263 に答える