Android入门之GPS定位分析
发布时间:2021-12-18 19:13:56 所属栏目:PHP教程 来源:互联网
导读:一、LocationManager LocationMangager,位置管理器。要想操作定位相关设备,必须先定义个LocationManager。 LocationManger locationManager=(LocationManager)this.getSystemService(Context.LOCATION_SERVICE); 二、LocationListener LocationListener,
一、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启动、停止、第一次定位、卫星变化等事件。 view plaincopy to clipboardprint? //定义 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) { GpsSatellite s = it.next(); count++; } 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(); //一般再次转换成Iterator Iterator<GpsSatellite> itrator=iterable.iterator(); 六、GpsSatellite GpsSatellite,定位卫星,包含卫星的方位、高度、伪随机噪声码、信噪比等信息。 //获取卫星 Iterable<GpsSatellite> iterable=gpsStatus.getSatellites(); //再次转换成Iterator Iterator<GpsSatellite> itrator=iterable.iterator(); //通过遍历重新整理为ArrayList ArrayList<GpsSatellite> satelliteList=new ArrayList<GpsSatellite>(); int count=0; int maxSatellites=gpsStatus.getMaxSatellites(); while (itrator.hasNext() && count <= maxSatellites) { GpsSatellite satellite = itrator.next(); satelliteList.add(satellite); count++; } 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()); } ![]() (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |