ACCESS_FINE_LOCATION是否提供纬度和经度信息?

时间:2013-07-26 02:16:09

标签: android

我想获取用户的纬度和经度信息。 ACCESS_FINE_LOCATION可以提供吗? “允许应用从位置信息源(如GPS,手机信号塔和Wi-Fi)访问精确位置。”

那么“GPS”提供什么类型的数据呢? 我只想要用户的纬度和经度信息,请告知我如何实施。

非常感谢。

1 个答案:

答案 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");
    }