public class GPSActivity extends Activity {
private LocationManager lm;
private MyListener listener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lm = (LocationManager) getSystemService(LOCATION_SERVICE);
/*
List<String> lists = lm.getAllProviders();
for(String list:lists){
System.out.println(lists);
结果显示出如下三中定位方式
GPS:GPS定位
network:网络定位
passive: 基站定位
}
*/
Criteria criteria = new Criteria();
//设置位置的精确度 fine精准的位置
criteria.setAccuracy(Criteria.ACCURACY_FINE);
//获取位置的海拔信息
criteria.setAltitudeRequired(true);
//gps定位的时候是否允许产生开销 (比如花费流量)
criteria.setCostAllowed(true);
//在何种手机电量状态下运行
criteria.setPowerRequirement(Criteria.POWER_HIGH);
//设置是否对速度敏感
criteria.setSpeedRequired(true);
//enabledOnly 设为true 使用允许的定位设备
//lm.getBestProvider(criteria, enabledOnly);
//得到最好的可用的位置提供者
String provider = lm.getBestProvider(criteria, true);
//给当前的activity注册一个位置的监听器 使用的是提供的provider
/*
lm.requestLocationUpdates(provider, minTime, minDistance, listener)
provider 内容的提供者 前面已定义
minTime 每个多长时间更新当前位置信息
minDistance 提示信息的最短位移量(m)
listener 当位置发生改变所对应的回调
*/
listener =new MyListener();
lm.requestLocationUpdates(provider, 60000, 10, listener);
}
private class MyListener implements LocationListener{
/**
* 当位置发生该变的时候调用的方法
*/
@Override
public void onLocationChanged(Location location) {
//获取到定位的精度
float accuracy = location.getAccuracy();
System.out.println("定位的精度:"+accuracy);
//获取经度
String longitude = "jingdu" +location.getLongitude();
//获取纬度信息
String latitude="weidu"+ location.getLatitude();
// 在界面上显示经纬度信息
TextView tv = new TextView(GPSActivity.this);
tv.setText(longitude+"---"+latitude);
setContentView(tv);
}
/**
* 当某一位置提供者不可用的时候调用
*/
@Override
public void onProviderDisabled(String provider) {
}
/**
* 当某一位置提供者可用的时候调用
*/
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
/**
* 当状态发生改变的时候调用的方法
* 设备的可用 不可用的状态发生了变化
*/
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
@Override
protected void onDestroy() {
//把当前注册的位置监听者移除掉 移除掉的话更新事件就不会再发生了
lm.removeUpdates(listener);
super.onDestroy();
}
}