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