2013-07-26 47 views
-2

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

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

非常感谢。

+0

你也许可以从阅读得到这个API – franklin

回答

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