AndroidGPS定位应用流程

AndroidGPS定位应用流程

这里先了解下应用层流程。

根据这个框架,GPS在应用层实现的最基本流程示例:
在这里插入图片描述

public class MainActivity extends Activity {
	private LocationManager mLocationManager;
 
	@Override
	protected void onDestroy() {
		super.onDestroy();
		mLocationManager.removeUpdates(locationListener);
	}
 
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
 
		/* 记得在AndroidManifest.xml文件中开启GPS相关的权限!!! */
		mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
 
		/* 检测GPS定位模块是否开启 */
		if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
			/* 针对GPS定位模块是否开启,具体接下来做的事 */
			return;
		}
 
		Location location = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
		updateLocationMessage(location);
		
		/* 监听GPS的状态变化 */
		mLocationManager.addGpsStatusListener(listener);
		
		/* 监听GPS的位置变化
		 * 这里指定2000ms或者移动距离超过4m的时候更新一次位置信息,但是
		 * 经过实际测试,更新间隔精确度极低,根本不按套路走。实际使用的话,还是采用Send Measage方式
		 */
		mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 4, locationListener);
	}
 
	/* 监听GPS的状态变化 */
	GpsStatus.Listener listener = new GpsStatus.Listener() {
		public void onGpsStatusChanged(int event) {
			switch (event) {
			/* 第一次获取到定位信息 */
			case GpsStatus.GPS_EVENT_FIRST_FIX:
				break;
			/* 卫星状态发生变化,捕获到卫星/卫星不可见 */
			case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
				break;
			case GpsStatus.GPS_EVENT_STARTED:
				break;
			case GpsStatus.GPS_EVENT_STOPPED:
				break;
			}
		};
	};
	
	private LocationListener locationListener = new LocationListener() {
		@Override
		public void onLocationChanged(Location location) {
			updateLocationMessage(location);
		}
 
		@Override
		public void onStatusChanged(String provider, int status, Bundle extras) {
			switch (status) {
			case LocationProvider.AVAILABLE:
				break;
			case LocationProvider.OUT_OF_SERVICE:
				break;
			case LocationProvider.TEMPORARILY_UNAVAILABLE:
				break;
			}
		}
 
		@Override
		public void onProviderEnabled(String provider) {
			
		}
 
		@Override
		public void onProviderDisabled(String provider) {
			
		}
 
	};
 
	private void updateLocationMessage(Location location) {
		
	}
}

上面提到的是GPS最基础的框架流程,此外它还有你想得到、想不到的其他许多用法与功能。

在Android的location包中,所有与定位相关的类和接口如下:

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值