揭锅拿锅话说其实...吧 关注:33贴子:1,582
  • 6回复贴,共1

Android GPS定位

只看楼主收藏回复

http://bbs.51cto.com/thread-955194-1.html


1楼2014-07-04 09:01回复
    一、LocationManager
    LocationMangager,位置管理器。要想操作定位相关设备,必须先定义个LocationManager。我们可以通过如下代码创建LocationManger对象。
    LocationManger locationManager=(LocationManager)this.getSystemService(Context.LOCATION_SERVICE);


    2楼2014-07-04 09:02
    收起回复
      二、LocationListener
      LocationListener,位置监听,监听位置变化,监听设备开关与状态。
      private LocationListener locationListener=new LocationListener() {
      /**
      * 位置信息变化时触发
      */
      public void onLocationChanged(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状态变化时触发
      */
      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);
      }
      };


      3楼2014-07-04 09:03
      回复
        三、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。


        4楼2014-07-04 09:06
        回复
          五、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();


          6楼2014-07-04 09:23
          回复
            六、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());
            }


            7楼2014-07-04 09:23
            回复