Android入门之GPS定位详解
来源:互联网 发布:淘宝上的警服 编辑:程序博客网 时间:2024/05/16 19:23
一、LocationManager
LocationMangager,位置管理器。要想操作定位相关设备,必须先定义个LocationManager。
LocationManger locationManager=(LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
二、LocationListener
LocationListener,位置监听,监听位置变化,监听设备开关与状态。
//定义LocationListener locationListener=new LocationListener(){//位置信息变化时触发public void onLocationChanged(Location location) {system.out.println("时间:"+location.getTime());system.out.println("经度:"+location.getLongitude());system.out.println("纬度:"+location.getLatitude());system.out.println("海拔:"+location.getAltitude());}//gps禁用时触发public void onProviderDisabled(String provider) {system.out.println("当前GPS状态:禁用\n");}//gps开启时触发public void onProviderEnabled(String provider) {system.out.println("当前GPS状态:开启\n");}//gps状态变化时触发public void onStatusChanged(String provider, int status,Bundle extras) {if(status==LocationProvider.AVAILABLE){system.out.println("当前GPS状态:可见的\n");}else if(status==LocationProvider.OUT_OF_SERVICE){system.out.println("当前GPS状态:服务区外\n");}else if(status==LocationProvider.TEMPORARILY_UNAVAILABLE){system.out.println("当前GPS状态:暂停服务\n");}}};//绑定监听,有4个参数//参数1,设备:有GPS_PROVIDER和NETWORK_PROVIDER两种,我们选用GPS,网络在此不做讨论//参数2,位置信息更新周期://参数3,位置变化最小距离:当位置距离变化超过此值时,将更新位置信息//参数4,监听//备注:参数2和3,如果参数3不为0,则以参数3为准;参数3为0,则通过时间来定时更新;两者为0,则随时刷新locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);
三、Location
Location,位置信息,通过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.Listener
GpsStatus.Listener ,GPS状态监听,包括GPS启动、停止、第一次定位、卫星变化等事件。
//定义GpsStatus.Listener gpsStatusListener=new GpsStatus.Listener(){public void onGpsStatusChanged(int event) {if(event==GpsStatus.GPS_EVENT_FIRST_FIX){//第一次定位}else if(event==GpsStatus.GPS_EVENT_SATELLITE_STATUS){//卫星状态改变GpsStatus gpsStauts= locationManager.getGpsStatus(null); // 取当前状态int maxSatellites = gpsStauts.getMaxSatellites(); //获取卫星颗数的默认最大值Iterator<GpsSatellite> it = gpsStatus.getSatellites().iterator();//创建一个迭代器保存所有卫星int count = 0; while (it.hasNext() && count <= maxSatellites) { count++; GpsStatellite s = it.next();} system.out.println("搜索到:"+count+"颗卫星");}else if(event==GpsStatus.GPS_EVENT_STARTED){//定位启动}else if(event==GpsStatus.GPS_EVENT_STOPPED){//定位结束}}};//绑定locationManager.addGpsStatusListener(gpsStatusListener);
五、GpsStatus
GpsStatus,GPS状态信息,上面在卫星状态变化时,我们就用到了GpsStatus。
//实例化GpsStatus gpsStatus = locationManager.getGpsStatus(null); // 取当前状态//获取默认最大卫星数int maxSatellites = gpsStatus.getMaxSatellites(); //获取第一次定位时间(启动到第一次定位)int costTime=gpsStatus.getTimeToFirstFix();//获取卫星Iterable<GpsSatellite> iterable=gpsStatus.getSatellites();//一般再次转换成IteratorIterator<GpsSatellite> itrator=iterable.iterator();
六、GpsSatellite
GpsSatellite,定位卫星,包含卫星的方位、高度、伪随机噪声码、信噪比等信息。
//获取卫星Iterable<GpsSatellite> iterable=gpsStatus.getSatellites();//再次转换成IteratorIterator<GpsSatellite> itrator=iterable.iterator();//通过遍历重新整理为ArrayListArrayList<GpsSatellite> satelliteList=new ArrayList<GpsSatellite>(); int count=0;int maxSatellites=gpsStatus.getMaxSatellites();while (itrator.hasNext() && count <= maxSatellites) { count++; satellite = itrator.next(); statelliteList.add(satellite);} System.out.println("总共搜索到"+count+"颗卫星");//输出卫星信息for(int i=0;i<satelliteList.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());}
- Android入门之GPS定位详解
- Android入门之GPS定位详解
- Android入门之GPS定位详解
- Android之GPS定位详解
- Android之GPS定位详解
- Android之GPS定位详解
- Android之GPS定位详解
- Android之GPS定位详解
- Android之GPS定位详解
- Android之GPS定位详解
- Android之GPS定位详解
- Android之GPS定位详解
- Android之GPS定位详解
- Android之GPS定位详解
- Android之GPS定位详解
- Android之GPS定位详解
- Android之GPS定位详解
- Android之GPS定位详解
- 十道海量数据处理面试题
- Request.Form的用法
- SQLite内建语法表
- 【iphone4 iOS4+升级到 iOS 5 beta7详细过程与iOS 5系统截图】-Himi升级iOS 5 beta7 流程
- 利用XML配置实现增删改查的思路总结
- Android入门之GPS定位详解
- 流媒体
- 组播
- 组播2
- 流媒体2
- 扑克牌的顺子
- 57. A merry heart goes all the way. 心旷神怡,事事顺心
- ISTQB AL-TA/TTA连载系列06:白盒测试技术的精炼总结(简单的一张图)
- 解决安装IIS时提示找不到zClinetm.exe(转)