通过 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); } }
Manifest
确保声明适当的权限在清单中文件:
仅基于网络的位置
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
仅基于 GPS 的位置
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
以上是为什么我使用 Android 的网络提供商获得过时的位置坐标?的详细内容。更多信息请关注PHP中文网其他相关文章!