Android之GPS定位详解 下载本文

内容发布更新时间 : 2024/6/17 21:43:35星期一 下面是文章的全部内容请认真阅读。

一、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 iters = gpsStatus.getSatellites().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();