-2

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

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

非常感谢。

4

1 回答 1

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");
    }
于 2013-07-26T02:42:22.693 回答