1、在android平台使用位置服务需要使用位置管理器,获得方法如下:
String locationService =Context.LOCATION_SERVICE;
LocationManager locationManager=(LocationManager)getSystemService(locationService);
android中为了安全机制在使用位置管理器的时候需要请求权限,请求方法如下:
这个两个权限管理用户在使用权限是可以使用的精度等级。Fine表示高精度、COARSE 表示的精度要差一点。
2、在获得位置之前还得了解一下“提供器”,在android中有三种位置提供器,如下:
LocationManager.GPS_PROVIDER;
LocationManager.NETWORK_PROVIDER;
LocationManager.PASSIVE_PROVIDER;
其中要使用GPS实现位置定位需要fine权限 ,其他两种coarse就可以了。
获得所有可用提供器的列表:
boolean enable=true;
List providers=locationManager.getProviders(enable);
也可以指定条件查找,那么这就需要使用Criteria类
Criteria criteria=new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setSpeedRequired(false);
criteria.setCostAllowed(true);
android3.0为Criteria引入了额外的属性
criteria.setHorizontalAccuracy(Criteria.ACCURACY_HIGH);
String bestProvider=locationManager.getBestProvider(criteria,true);
3、 获得手机的最后一次定位的方法:
Location location=locationManager.getLastKnowLocation(LocationManager.GPS_PROVIDER);
4、获得实时地理位置信息
检测地理位置变化有两种方法,一种是使用LocationListener 一种是使用BroadCast Receiver;
String provider LocationManager.GPS_PROVIDER;
int t=5000;// 毫秒
int distance= 5;//米
LocationListener myListener=new LocationListener(){
.......
pubolic void onStatusChanged( String p,int status, Bundle b){
}
}
locationManager.requestLocationUpdates(provider,t,distance,mylistener);
当位置变化是的时候会在listener的方法onStatusChanged会被调用