慢慢看一下上述的连接中关于LocationManager的讲解以及其中得注释部分,博主讲的挺详细了。
接下来我把LocationManager的基本用法零碎的写一下
获取到一个LocationManager的实例调用系统的服务(因为LocationManager本身就是一个系统的服务)
LocationManager locationManager = (LocationManager) getSystemService (Context.LOCATION_SERVICE);
接下来我们需要一个位置提供器来确定设备当前的位置。android中一般有三种位置提供器可供选择,GPS_PROVIDER、NETWORK_PROVIDER、PASSIVE_PROVIDER 。其中前两种使用比较多,分别表示使用GPS定位和使用网络定位。
GPS 耗电高,准确度高
网络 耗电低,准确度稍差(很不错的选择)
选择好位置提供器的方式后
String provider = LocationManager.NETWORK_PROVIDER;
Location location = locationManager.getLastKnowLocation (provider);
这个location对象中包含里经度、纬度、海拔等一系列位置信息,然后从中取出我们要的就好。
判断一下有哪些位置提供器可用,我们可以用一个数组来接收目前启用的位置提供器有哪些,然后再根据需要进行甄别。
List<String> providerList = locationManager.getProviders (true) ;
传入的true 表示,只有启用的位置提供器才会被返回。
当位置发生改变时,我们以隔一段时间请求一次的方式来获取更改的状态,同时,利用监听事件来对改变的状态进行判别。
locationManager . requestLocationUpdates (LocationManager.GPS_PROVEDER , 5000 , 10 , new LocationListener () {
@Override
public void onStatusChanged(String provider, int status, Bundle
extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onLocationChanged(Location location) {
}
});
当状态发生改变时(如移动距离超过了10米,就会调用LocationListener的onLocationChanged () 方法,并把新的位置信息传入)