6

基準に ACCURACY を設定すると、LocationManager が位置情報の更新を開始するのに時間がかかります。

Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
provider = locationManager.getBestProvider(criteria, true);
locationManager.requestLocationUpdates(provider, 0, 0, this);

ACCURACY フラグを削除すると、すぐに開始されますが、正確でない場合があります。

すぐに正確に更新を開始するにはどうすればよいですか?

4

4 に答える 4

3

方位や高度などではなく、精度のみを気にする場合はLocationClient、Google の APIで新しい融合プロバイダーに切り替えることをお勧めします。

最初の修正を取得するのは非常に迅速で、ネットワーク ベースよりも正確で、GPS に依存しません。

組み込みの よりも少し多くのセットアップが必要なLocationManagerので、次のトレーニング記事を読むことができます: http://developer.android.com/training/location/receive-location-updates.html

于 2013-06-23T11:21:22.567 に答える
2

少なくとも ではACCURACY_FINE、最初の GPS フィックスを取得するのを待っていると思われます。別の理由 (ナビゲーションの途中など) で既に GPS をオンにしている場合は、すぐにレポートが開始されることがあります。

GPS の修正には時間がかかる場合があります。これは、GPS の仕組みのごく自然な部分だと思います。

于 2013-06-22T09:14:11.783 に答える
0

LocationManager特定のハードウェア用にカスタマイズされた Android オープン ソース コードに大きく依存しているため、多くの携帯電話でバグがあります。それに関して言えば、サムスンの携帯電話は非常にバグがありLocationManagerます。

を使用しないでください。requestLocationUpdates代わりgetLastKnownLocationに、小さなハックで使用してください。呼び出しの直前に次のハックを配置すると、を使用して定期的な更新を取得getLastKnownLocationできるはずです。AlarmManager

HomeScreen.getLocationManager().requestLocationUpdates(
    LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() {
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
        }
        @Override
        public void onProviderEnabled(String provider) {
        }
        @Override
        public void onProviderDisabled(String provider) {
        }
        @Override
        public void onLocationChanged(final Location location) {
        }
    });

LocationClientの他の代替手段LocationManagerです。それはより正確で、バッテリーの使用量がはるかに少なくなります。

于 2013-06-23T12:41:31.390 に答える