本帖最后由 sdzbsj 于 2011-11-15 21:26:44 编辑

解决方案 »

  1.   

    定位了就有经纬度,没定位,则一直闪的;
    一般是4个星的时候 会定位。
    所以可以根据是否获取有效的经纬度信息来判断是否定位。卫星的个数 sv_status也是可以通过API获取的。LOCATION类
      

  2.   


    给你一段我的代码,看看就知道了。locationManager.addGpsStatusListener(statusListener);//侦听GPS状态private GpsStatus.Listener statusListener = new GpsStatus.Listener()  {
        public void onGpsStatusChanged(int event)
        {
         // TODO Auto-generated method stub
        GpsStatus gpsStatus= locationManager.getGpsStatus(null);
        Log.v(TAG,"GPS status listener  ");
        //Utils.DisplayToastShort(GPSService.this, "GPS status listener  ");
    switch(event)
         {
         case GpsStatus.GPS_EVENT_FIRST_FIX:{
              //第一次定位时间UTC gps可用
              //Log.v(TAG,"GPS is usable");
           int i=gpsStatus.getTimeToFirstFix();
              Utils.DisplayToastShort(GPSService.this, "GPS 第一次可用  "+i);
              Utils.setGPSStatus(Utils.GPS_STATUS.START);
              break;
         }
         
         case GpsStatus.GPS_EVENT_SATELLITE_STATUS:{//周期的报告卫星状态
              //得到所有收到的卫星的信息,包括 卫星的高度角、方位角、信噪比、和伪随机号(及卫星编号)
          Iterable<GpsSatellite> allSatellites;
          allSatellites = gpsStatus.getSatellites();
          Iterator<GpsSatellite>iterator = allSatellites.iterator();
          int numOfSatellites = 0;
          int maxSatellites=gpsStatus.getMaxSatellites();
          while(iterator.hasNext() && numOfSatellites<maxSatellites){
           numOfSatellites++;
           iterator.next();
          }
          Log.v(TAG,"GPS is **unusable** "+ numOfSatellites +"      "+ maxSatellites);
          if( numOfSatellites < 3){
           
          // Utils.DisplayToastShort(GPSService.this, "***卫星少于3颗***");
           Utils.setGPSStatus(Utils.GPS_STATUS.STOP);
          }  else if(numOfSatellites > 7){
           Utils.setGPSStatus(Utils.GPS_STATUS.START);
          }
          break;
         }
         
         case GpsStatus.GPS_EVENT_STARTED:{
          //Utils.DisplayToastShort(GPSService.this, "GPS start Event");
          break;
         }
         
         case GpsStatus.GPS_EVENT_STOPPED:{
         //Utils.DisplayToastShort(GPSService.this, "GPS **stop*** Event");
         Utils.setGPSStatus(Utils.GPS_STATUS.STOP);
          break;
         }
         
         default :
          break;
         }
        }
    };