Android Location在GPS中的应用 一
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.****.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
新建AndroidProject,注意选择Google APIs:
打开AndroidManifest.xml,在其中加入GPS使用权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
main.java的代码如下:
public class main extends Activity {
/** Called when the activity is first created. */
private LocationManager locationManager;
private String provider;
private Location location;
private Address address;
@Override
public void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 获取LocationManager服务
locationManager =(LocationManager) this
.getSystemService(Context.LOCATION_SERVICE);
// 获取Location Provider
getProvider();
// 如果未设置位置源,打开GPS设置界面
openGPS();
// 获取位置
location = locationManager.getLastKnownLocation(provider);
// 显示位置信息到文字标签
updateWithNewLocation(location);
// 注册监听器locationListener,第2、3个参数可以控制接收gps消息的频度以节省电力。第2个参数为毫秒,
// 表示调用listener的周期,第3个参数为米,表示位置移动指定距离后就调用listener
locationManager.requestLocationUpdates(provider, 2000, 10,
locationListener);
}
// 判断是否开启GPS,若未开启,打开GPS设置界面
private void openGPS() {
if (locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)
||locationManager.isProviderEnabled(android.location.LocationManager.NETWORK_PROVIDER)
) {
Toast.makeText(this, "位置源已设置!", Toast.LENGTH_SHORT).show();
return;
}
Toast.makeText(this, "位置源未设置!", Toast.LENGTH_SHORT).show();
// 转至GPS设置界面
Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
startActivityForResult(intent,0);
}
// 获取Location Provider
private void getProvider(){
// 构建位置查询条件
Criteria criteria = new Criteria();
// 查询精度:高
criteria.setAccuracy(Criteria.ACCURACY_FINE);
// 是否查询海拨:否
criteria.setAltitudeRequired(false);
// 是否查询方位角:否
criteria.setBearingRequired(false);
// 是否允许付费:是
criteria.setCostAllowed(true);
// 电量要求:低
criteria.setPowerRequirement(Criteria.POWER_LOW);
// 返回最合适的符合条件的provider,第2个参数为true说明,如果只有一个provider是有效的,则返回当前provider
provider = locationManager.getBestProvider(criteria,true);
}
// Gps消息监听器
private final LocationListener locationListener = new LocationListener(){
// 位置发生改变后调用
public voidonLocationChanged(Location location) {
updateWithNewLocation(location);
}
// provider被用户关闭后调用
public voidonProviderDisabled(String provider){
updateWithNewLocation(null);
}
// provider被用户开启后调用
public voidonProviderEnabled(String provider){ }
// provider状态变化时调用
public voidonStatusChanged(String provider, int status,
Bundle extras){ }
};
// Gps监听器调用,处理位置信息
private void updateWithNewLocation(Locationlocation) {
String latLongString;
TextView myLocationText= (TextView)findViewById(R.id.text);
if (location != null) {