一、LocationManager LocationMangager,位置管理器。要想操作定位相关设备,必须先定义个LocationManager。我们可以通过如下代码创建LocationManger对象。 LocationManger
locationManager=(LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
二、LocationListener
LocationListener,位置监听,监听位置变化,监听设备开关与状态。
private LocationListener locationListener=new LocationListener() { /**
* 位置信息变化时触发 */
public void onLocationChanged(Location location) { updateView(location);
Log.i(TAG, \时间:\
Log.i(TAG, \经度:\ Log.i(TAG, \纬度:\ Log.i(TAG, \海拔:\ } /**
* GPS状态变化时触发 */
public void onStatusChanged(String provider, int status, Bundle extras) {
switch (status) { //GPS状态为可见时
case LocationProvider.AVAILABLE:
Log.i(TAG, \当前GPS状态为可见状态\ break;
//GPS状态为服务区外时
case LocationProvider.OUT_OF_SERVICE:
Log.i(TAG, \当前GPS状态为服务区外状态\ break;
//GPS状态为暂停服务时
case LocationProvider.TEMPORARILY_UNAVAILABLE: Log.i(TAG, \当前GPS状态为暂停服务状态\ break; } }
/**
* GPS开启时触发 */
public void onProviderEnabled(String provider) {
Location location=lm.getLastKnownLocation(provider); updateView(location); }
/**
* GPS禁用时触发 */
public void onProviderDisabled(String provider) { updateView(null); }
};
三、Location
Location,位置信息,通过Location可以获取时间、经纬度、海拔等位置信息。上面采用locationListener里面的onLocationChanged()来获取location,下面讲述如何主动获取location。 Location
location=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
system.out.println(\时间:\ system.out.println(\经度:\
注意:Location location=new Location(LocationManager.GPS_PROVIDER)方式获取的location的各个参数值都是为0。
四、GpsStatus.Listener
GpsStatus.Listener ,GPS状态监听,包括GPS启动、停止、第一次定位、卫星变化等事件。
//状态监听
GpsStatus.Listener listener = new GpsStatus.Listener() { public void onGpsStatusChanged(int event) { switch (event) { //第一次定位
case GpsStatus.GPS_EVENT_FIRST_FIX: Log.i(TAG, \第一次定位\
break; //卫星状态改变
case GpsStatus.GPS_EVENT_SATELLITE_STATUS: Log.i(TAG, \卫星状态改变\ //获取当前状态
GpsStatus gpsStatus=lm.getGpsStatus(null); //获取卫星颗数的默认最大值
int maxSatellites = gpsStatus.getMaxSatellites(); //创建一个迭代器保存所有卫星 Iterator
int count = 0;
while (iters.hasNext() && count <= maxSatellites) {
GpsSatellite s = iters.next(); count++; }
System.out.println(\搜索到:\颗卫星\ break; //定位启动
case GpsStatus.GPS_EVENT_STARTED: Log.i(TAG, \定位启动\ break; //定位结束
case GpsStatus.GPS_EVENT_STOPPED: Log.i(TAG, \定位结束\ break; } }; };
//绑定监听状态
lm.addGpsStatusListener(listener);
五、GpsStatus
GpsStatus,GPS状态信息,上面在卫星状态变化时,我们就用到了GpsStatus。
//实例化
GpsStatus gpsStatus = locationManager.getGpsStatus(null); // 获取当前状态
//获取默认最大卫星数
int maxSatellites = gpsStatus.getMaxSatellites();