我想获取用户的经纬度信息。ACCESS_FINE_LOCATION 可以提供吗? “允许应用程序从 GPS、手机信号塔和 Wi-Fi 等位置源访问精确位置。”
那么“GPS”提供什么类型的数据呢?我只是想要用户的经纬度信息,请告诉我如何实现它。
非常感谢。
我想获取用户的经纬度信息。ACCESS_FINE_LOCATION 可以提供吗? “允许应用程序从 GPS、手机信号塔和 Wi-Fi 等位置源访问精确位置。”
那么“GPS”提供什么类型的数据呢?我只是想要用户的经纬度信息,请告诉我如何实现它。
非常感谢。
LocationManager是提供对系统位置服务的访问的类。
要使用 LocationManager,您需要两个权限之一
ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION
提供大致位置信息,因为它无法访问 GPS,它仅使用手机信号塔和 Wi-Fi,但在电池使用和性能方面很便宜。
ACCESS_FINE_LOCATION
更准确,因为它访问 GPS 并为您提供纬度和经度信息,但它消耗更多资源。
因此,如果您想更准确地获取经纬度信息,请使用ACCESS_FINE_LOCATION
使用权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
然后获取当前位置
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
...
}
@Override
public void onLocationChanged(Location location) {
//Use Location information from here
Log.d("Latitude:" + location.getLatitude() + ", Longitude:" + location.getLongitude());
}
@Override
public void onProviderDisabled(String provider) {
Log.d("Latitude","disable");
}
@Override
public void onProviderEnabled(String provider) {
Log.d("Latitude","enable");
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d("Latitude","status");
}