Android学习笔记--用户定位User Location
private class TestLocationListener implements
LocationListener{
@Override
public void
onLocationChanged(Location location){
System.out.println(location.getLongitude());
System.out.println(location.getLatitude());
}
@Override
public void
onProviderDisabled(String provider){
// do something you need
}
@Override
public void
onProviderEnabled(String provider){
// do something you need
}
@Override
public void
onStatusChanged(String provider,int status,Bundle extras){
// do something you need
}
}
private class ButtonListener implements OnClickListener{
@Override
public void onClick(View
v){
// 得到LocationManager对象
LocationManager locationManager =
(LocationManager)YourActivity.this.getSystemService(Context.LOCATION_SERVICE);
// requestLocationUpdates(String provider,long minTime,float
minDistance,LocationListener listener)
// 第一个参数,定义当前所使用的Location Provider
// 第二个参数,指示更新的最小时间,但并不是确定的,可能更多或更小
// 第三个参数,两次定位之间的最小距离,单位米。
// 第四个参数,监听器
LocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,new
TestLocationListener());
}
List<String> providers =
locationManager.getAllProviders();
for(Iterator iterator =
providers.iterator();iterator.hasNext();){
String provider =
(String)iterator.next();
System.out.println(provider);
// and do something you
need
}
private class BestProviderButtonListener implements
OnClickListener{
@Override
public void onClick(View
v){
// 生成一个Criteria对象
Criteria criteria = new Criteria();
// 设置查询条件
criteria.setAccuracy(Criteria.ACCURACY_FINE); //
设置准确而非粗糙的精度
criteria.setPowerRequirement(Criteria.POWER_LOW); //
设置相对省电而非耗电,一般高耗电量会换来更精确的位置信息
criteria.setAltitudeRequired(false); //
不需要提供海拔信息
criteria.setSpeedRequired(false); //
不需要速度信息
criteria.setCostAllowed(false); // 不能产生费用
// 第一个参数,传递criteria对象
//
第二个参数,若为false,在所有Provider中寻找,不管该Provider是否处于可用状态,均使用该Provider。
// 若为true,则在所有可用的Provider中寻找。比如GPS处于禁用状态,则忽略GPS
Provider。
String provider =
locationManager.getBestProvider(criteria,false);
System.out.println("Best
provider-->"+provider);
}
}