透過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); } }
Manifes t
確保聲明適當的權限在清單中文件:
僅基於網路的位置
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
僅基於GPS 的位置
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
以上是為什麼我使用 Android 的網路供應商獲得過時的位置座標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!