




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、LocationManagerLocationMangager,位置管理器。要想操作定位相关设备,必须先定义个LocationManager。我们可以通过如下代码创建LocationManger对象。LocationManger locationManager=(LocationManager)this.getSystemService(Context.LOCATION_SERVICE);二、LocationListenerLocationListener,位置监听,监听位置变化,监听设备开关与状态。 privateLocationListener locationListener=newLocationListener() /* * 位置信息变化时触发 */ publicvoidonLocationChanged(Location location) updateView(location); Log.i(TAG, 时间:+location.getTime(); Log.i(TAG, 经度:+location.getLongitude(); Log.i(TAG, 纬度:+location.getLatitude(); Log.i(TAG, 海拔:+location.getAltitude(); /* * GPS状态变化时触发 */ publicvoidonStatusChanged(String provider,intstatus, Bundle extras) switch(status) /GPS状态为可见时 caseLocationProvider.AVAILABLE: Log.i(TAG, 当前GPS状态为可见状态); break; /GPS状态为服务区外时 caseLocationProvider.OUT_OF_SERVICE: Log.i(TAG, 当前GPS状态为服务区外状态); break; /GPS状态为暂停服务时 caseLocationProvider.TEMPORARILY_UNAVAILABLE: Log.i(TAG, 当前GPS状态为暂停服务状态); break; /* * GPS开启时触发 */ publicvoidonProviderEnabled(String provider) Location location=lm.getLastKnownLocation(provider); updateView(location); /* * GPS禁用时触发 */ publicvoidonProviderDisabled(String provider) updateView(null); ;三、LocationLocation,位置信息,通过Location可以获取时间、经纬度、海拔等位置信息。上面采用locationListener里面的onLocationChanged()来获取location,下面讲述如何主动获取location。Location location=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); system.out.println(时间:+location.getTime(); system.out.println(经度:+location.getLongitude();注意:Location location=new Location(LocationManager.GPS_PROVIDER)方式获取的location的各个参数值都是为0。四、GpsStatus.ListenerGpsStatus.Listener ,GPS状态监听,包括GPS启动、停止、第一次定位、卫星变化等事件。 /状态监听 GpsStatus.Listener listener =newGpsStatus.Listener() publicvoidonGpsStatusChanged(intevent) switch(event) /第一次定位 caseGpsStatus.GPS_EVENT_FIRST_FIX: Log.i(TAG, 第一次定位); break; /卫星状态改变 caseGpsStatus.GPS_EVENT_SATELLITE_STATUS: Log.i(TAG, 卫星状态改变); /获取当前状态 GpsStatus gpsStatus=lm.getGpsStatus(null); /获取卫星颗数的默认最大值 intmaxSatellites = gpsStatus.getMaxSatellites(); /创建一个迭代器保存所有卫星 Iterator iters = gpsStatus.getSatellites().iterator(); intcount = 0; while(iters.hasNext() & count = maxSatellites) GpsSatellite s = iters.next(); count+; System.out.println(搜索到:+count+颗卫星); break; /定位启动 caseGpsStatus.GPS_EVENT_STARTED: Log.i(TAG, 定位启动); break; /定位结束 caseGpsStatus.GPS_EVENT_STOPPED: Log.i(TAG, 定位结束); break; ; ;/绑定监听状态lm.addGpsStatusListener(listener);五、GpsStatusGpsStatus,GPS状态信息,上面在卫星状态变化时,我们就用到了GpsStatus。/实例化 GpsStatus gpsStatus = locationManager.getGpsStatus(null);/获取当前状态 /获取默认最大卫星数 intmaxSatellites = gpsStatus.getMaxSatellites(); /获取第一次定位时间(启动到第一次定位) intcostTime=gpsStatus.getTimeToFirstFix(); /获取卫星 Iterable iterable=gpsStatus.getSatellites(); /一般再次转换成Iterator Iterator itrator=iterable.iterator();六、GpsSatellite GpsSatellite,定位卫星,包含卫星的方位、高度、伪随机噪声码、信噪比等信息。 /获取卫星 Iterable iterable=gpsStatus.getSatellites(); /再次转换成Iterator Iterator itrator=iterable.iterator(); /通过遍历重新整理为ArrayList ArrayList satelliteList=newArrayList(); intcount=0; intmaxSatellites=gpsStatus.getMaxSatellites(); while(itrator.hasNext() & count = maxSatellites) GpsSatellite satellite = itrator.next(); satelliteList.add(satellite); count+; System.out.println(总共搜索到+count+颗卫星); /输出卫星信息 for(inti=0;isatelliteList.size();i+) /卫星的方位角,浮点型数据 System.out.println(satelliteList.get(i).getAzimuth(); /卫星的高度,浮点型数据 System.out.println(satelliteList.get(i).getElevation(); /卫星的伪随机噪声码,整形数据 System.out.println(satelliteList.get(i).getPrn(); /卫星的信噪比,浮点型数据 System.out.println(satelliteList.get(i).getSnr(); /卫星是否有年历表,布尔型数据 System.out.println(satelliteList.get(i).hasAlmanac(); /卫星是否有星历表,布尔型数据 System.out.println(satelliteList.get(i).hasEphemeris(); /卫星是否被用于近期的GPS修正计算 System.out.println(satelliteList.get(i).hasAlmanac(); 为了便于理解,接下来模拟一个案例,如何在程序代码中使用GPS获取位置信息。第一步:新建一个Android工程项目,命名为mygps,目录结构如下第二步:修改main.xml布局文件,修改内容如下: 第三步:实用Adnroid平台的GPS设备,需要添加上权限 第四步:修改核心组件activity,修改内容如下packagecom.ljq.activity;importjava.util.Iterator;importandroid.app.Activity;importandroid.content.Context;importandroid.content.Intent;importandroid.location.Criteria;importandroid.location.GpsSatellite;importandroid.location.GpsStatus;importandroid.location.Location;importandroid.location.LocationListener;importandroid.location.LocationManager;importandroid.location.LocationProvider;importandroid.os.Bundle;vider.Settings;importandroid.util.Log;importandroid.widget.EditText;importandroid.widget.Toast;publicclassGpsActivityextendsActivity privateEditText editText; privateLocationManager lm; privatestaticfinalString TAG=GpsActivity;Overrideprotected void onDestroy() / TODO Auto-generated method stubsuper.onDestroy();lm.removeUpdates(locationListener); Override publicvoidonCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); editText=(EditText)findViewById(R.id.editText); lm=(LocationManager)getSystemService(Context.LOCATION_SERVICE); /判断GPS是否正常启动 if(!lm.isProviderEnabled(LocationManager.GPS_PROVIDER) Toast.makeText(this, 请开启GPS导航., Toast.LENGTH_SHORT).show(); /返回开启GPS导航设置界面 Intent intent =newIntent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivityForResult(intent,0); return; /为获取地理位置信息时设置查询条件 String bestProvider = lm.getBestProvider(getCriteria(),true); /获取位置信息 /如果不设置查询要求,getLastKnownLocation方法传人的参数为LocationManager.GPS_PROVIDER Location location= lm.getLastKnownLocation(bestProvider); updateView(location); /监听状态 lm.addGpsStatusListener(listener); /绑定监听,有4个参数 /参数1,设备:有GPS_PROVIDER和NETWORK_PROVIDER两种 /参数2,位置信息更新周期,单位毫秒 /参数3,位置变化最小距离:当位置距离变化超过此值时,将更新位置信息 /参数4,监听 /备注:参数2和3,如果参数3不为0,则以参数3为准;参数3为0,则通过时间来定时更新;两者为0,则随时刷新 /1秒更新一次,或最小位移变化超过1米更新一次; /注意:此处更新准确度非常低,推荐在service里面启动一个Thread,在run中sleep(10000);然后执行handler.sendMessage(),更新位置 lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, locationListener); /位置监听 privateLocationListener locationListener=newLocationListener() /* * 位置信息变化时触发 */ publicvoidonLocationChanged(Location location) updateView(location); Log.i(TAG, 时间:+location.getTime(); Log.i(TAG, 经度:+location.getLongitude(); Log.i(TAG, 纬度:+location.getLatitude(); Log.i(TAG, 海拔:+location.getAltitude(); /* * GPS状态变化时触发 */ publicvoidonStatusChanged(String provider,intstatus, Bundle extras) switch(status) /GPS状态为可见时 caseLocationProvider.AVAILABLE: Log.i(TAG, 当前GPS状态为可见状态); break; /GPS状态为服务区外时 caseLocationProvider.OUT_OF_SERVICE: Log.i(TAG, 当前GPS状态为服务区外状态); break; /GPS状态为暂停服务时 caseLocationProvider.TEMPORARILY_UNAVAILABLE: Log.i(TAG, 当前GPS状态为暂停服务状态); break; /* * GPS开启时触发 */ publicvoidonProvid
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025北京怀柔区庙城镇社区卫生服务中心招聘合同制2人模拟试卷及答案详解(历年真题)
- 2025昌吉州融媒体中心引进急需紧缺人才(1人)模拟试卷及一套完整答案详解
- 2025广东茂名市化州市第二批就业见习岗位招聘42人模拟试卷及一套完整答案详解
- 2025华夏银行校园招聘考前自测高频考点模拟试题及1套完整答案详解
- 2025江苏宿迁市中医院招聘事业编制人员15人考前自测高频考点模拟试题附答案详解(典型题)
- 2025年新能源微电网稳定性控制与电力系统负荷预测准确性研究
- 2025河南郑州大学第三附属医院招聘160名模拟试卷及答案详解(典优)
- 2025年福建省龙岩金叶复烤有限责任公司招聘5人模拟试卷有完整答案详解
- 2025海南澄迈县就业局招聘见习生1人模拟试卷及完整答案详解1套
- 2025内蒙古锡林浩特市内蒙古北方人才集团招聘10人模拟试卷附答案详解
- 江浙皖高中(县中)发展共同体2025-2026学年高三上学期10月联考技术试题(含答案)
- 2026年国网山东省电力公司高校毕业生提前批招聘(约450人)考试参考试题及答案解析
- 2025贵州盐业(集团)遵义有限责任公司招聘15人笔试备考试题及答案解析
- EMS供应商对比方案报告
- 神奇的加密术教学设计-2025-2026学年初中数学北师大版2024八年级上册-北师大版2024
- 《现代施工工程机械》课件(共十四章)
- 价格波动对利润影响分析-洞察及研究
- 金属圆锯机操作安全规程标准版
- 广西检测协会试题(钢结构检测综合)判断题(1-375)
- 医院感染判定标准与流程
- 我的祖国音乐教学课件
评论
0/150
提交评论