我想获取用户的纬度和经度信息。 ACCESS_FINE_LOCATION可以提供吗? “允许应用从位置信息源(如GPS,手机信号塔和Wi-Fi)访问精确位置。”
那么“GPS”提供什么类型的数据呢? 我只想要用户的纬度和经度信息,请告知我如何实施。
非常感谢。
答案 0 :(得分:0)
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");
}