Heim > Java > javaLernprogramm > Hauptteil

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

Mary-Kate Olsen
Freigeben: 2024-11-24 13:17:12
Original
494 Leute haben es durchsucht

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 {
            // ...
        }
    }
}
Nach dem Login kopieren

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;
    }
}
Nach dem Login kopieren

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);
    }
}
Nach dem Login kopieren

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"/>
Nach dem Login kopieren

Nur ​​GPS-basierter Standort

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage