packagebasic.android.lesson26;
importandroid.app.Activity;
importandroid.content.Context;
importandroid.location.Criteria;
importandroid.location.Location;
importandroid.location.LocationListener;
importandroid.location.LocationManager;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.TextView;
publicclassMainActivityextendsActivity {
TextView tv1;
Location location;
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 定义UI组件
Button b1 = (Button) findViewById(R.id.button1);
tv1 = (TextView) findViewById(R.id.textView1);
// 获取LocationManager对象
LocationManager lm = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
// 定义Criteria对象
Criteria criteria =newCriteria();
// 设置定位精确度 Criteria.ACCURACY_COARSE 比较粗略, Criteria.ACCURACY_FINE则比较精细
criteria.setAccuracy(Criteria.ACCURACY_FINE);
// 设置是否需要海拔信息 Altitude
criteria.setAltitudeRequired(true);
// 设置是否需要方位信息 Bearing
criteria.setBearingRequired(true);
// 设置是否允许运营商收费
criteria.setCostAllowed(true);
// 设置对电源的需求
criteria.setPowerRequirement(Criteria.POWER_LOW);
// 获取GPS信息提供者
String bestProvider = lm.getBestProvider(criteria,true);
Log.i("yao","bestProvider = "+ bestProvider);
// 获取定位信息
location = lm.getLastKnownLocation(bestProvider);
// 给按钮绑定点击监听器
b1.setOnClickListener(newView.OnClickListener() {
@Override
publicvoidonClick(View v) {
updateLocation(location);
}
});
// 位置监听器
LocationListener locationListener =newLocationListener() {
// 当位置改变时触发
@Override
publicvoidonLocationChanged(Location location) {
Log.i("yao", location.toString());
updateLocation(location);
}
// Provider失效时触发
@Override
publicvoidonProviderDisabled(String arg0) {
Log.i("yao", arg0);
}
// Provider可用时触发
@Override
publicvoidonProviderEnabled(String arg0) {
Log.i("yao", arg0);
}
// Provider状态改变时触发
@Override
publicvoidonStatusChanged(String arg0,intarg1, Bundle arg2) {
Log.i("yao","onStatusChanged");
}
};
// 500毫秒更新一次,忽略位置变化
lm.requestLocationUpdates(bestProvider,500,0, locationListener);
}
// 更新位置信息
privatevoidupdateLocation(Location location) {
if(location !=null) {
tv1.setText("定位对象信息如下:"+ location.toString() +"\n\t其中经度:"+ location.getLongitude() +"\n\t其中纬度:"
+ location.getLatitude());
}else{
Log.i("yao","没有获取到定位对象Location");
}
}
}
|