Heim >Java >javaLernprogramm >Warum erhalte ich über den Netzwerkanbieter von Android veraltete Standortkoordinaten?

Warum erhalte ich über den Netzwerkanbieter von Android veraltete Standortkoordinaten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-24 13:17:12561Durchsuche

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

So erhalten Sie den aktuellen Standort in Android

Problembeschreibung

Das Erfassen aktueller Standortkoordinaten über den NETWORK-Anbieter des Android-Standortsystems stellt für den Benutzer eine Herausforderung dar , da sie durchweg veraltete statt aktuelle Koordinaten erhalten. Trotz der Implementierung mehrerer vorhandener Klassen besteht das Problem weiterhin.

Code Snippets

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;
    }
}

Vorgeschlagene Lösung

Das Problem kann zugeschrieben werden zu unzureichenden Standortaktualisierungen führen. Hier ist ein geänderter Codeausschnitt, um das Problem zu beheben:

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

Stellen Sie sicher, dass die entsprechenden Berechtigungen deklariert sind in der Manifestdatei:

Netzwerkbasierter Standort Nur

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

Nur ​​GPS-basierter Standort

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

Das obige ist der detaillierte Inhalt vonWarum erhalte ich über den Netzwerkanbieter von Android veraltete Standortkoordinaten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn