ホームページ  >  記事  >  Java  >  Android のネットワーク プロバイダーを使用すると古い位置座標が取得されるのはなぜですか?

Android のネットワーク プロバイダーを使用すると古い位置座標が取得されるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-24 13:17:12499ブラウズ

Why Am I Getting Outdated Location Coordinates Using Android's Network Provider?

Android で現在位置を取得する方法

問題の説明

Android の位置情報システムの NETWORK プロバイダーを介して現在の位置座標を取得することは、ユーザーにとって困難であることがわかります、現在の座標ではなく古い座標を常に受け​​取るためです。複数の既存のクラスを実装しているにもかかわらず、問題は解決しません。

コード スニペット

MainActivity

public class MainActivity extends Activity {
    GPSTracker mGPS = new GPSTracker(this);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // ...
        if (mGPS.canGetLocation) {
            mGPS.getLocation();
            // ...
        } else {
            // ...
        }
    }
}

GPSTracker

public class GPSTracker implements LocationListener {
    private LocationManager locationManager;

    public Location getLocation() {
        // ...
        if (isNetworkEnabled) {
            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 
                    MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
            // ...
        }
        // ...
        return location;
    }
}

提案されました解決策

この問題は、位置情報の更新が不十分であることが原因である可能性があります。これを解決するために変更されたコード スニペットは次のとおりです。

MainActivity

public class MainActivity extends Activity {
    private LocationListener mLocationListener = new LocationListener() {
        // ...
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // ...
        LocationManager mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 
                LOCATION_REFRESH_TIME, LOCATION_REFRESH_DISTANCE, mLocationListener);
    }
}

Manifest

適切なアクセス許可が宣言されていることを確認します。マニフェストの中でファイル:

ネットワークベースの位置情報のみ

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

GPS ベースの位置情報のみ

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

以上がAndroid のネットワーク プロバイダーを使用すると古い位置座標が取得されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。