Rumah >Java >javaTutorial >Mengapa Saya Mendapat Koordinat Lokasi Lapuk Menggunakan Pembekal Rangkaian Android?

Mengapa Saya Mendapat Koordinat Lokasi Lapuk Menggunakan Pembekal Rangkaian Android?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-24 13:17:12558semak imbas

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

Cara Mendapatkan Lokasi Semasa dalam Android

Penerangan Isu

Memperoleh koordinat lokasi semasa melalui pembekal RANGKAIAN sistem lokasi Android terbukti mencabar bagi pengguna , kerana mereka secara konsisten menerima koordinat lapuk dan bukannya koordinat semasa. Walaupun melaksanakan berbilang kelas sedia ada, isu ini berterusan.

Coretan Kod

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

Dicadangkan Penyelesaian

Isu ini boleh dikaitkan dengan kemas kini lokasi yang tidak mencukupi. Berikut ialah coretan kod yang diubah suai untuk menyelesaikannya:

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

Pastikan kebenaran yang sesuai diisytiharkan dalam Manifest fail:

Lokasi Berasaskan Rangkaian Sahaja

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

Lokasi Berasaskan GPS Sahaja

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

Atas ialah kandungan terperinci Mengapa Saya Mendapat Koordinat Lokasi Lapuk Menggunakan Pembekal Rangkaian Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn