如何在android中获取gps中使用的卫星数量?

Shu*_*oul 5 gps android

我写得像这样.但我总是0.请纠正我错在哪里.

public int getSatellites() { 

    GpsStatus gpsStatus = locationManager.getGpsStatus(null);
     int count=0;
     if(gpsStatus != null) {
         Iterable<GpsSatellite>satellites = gpsStatus.getSatellites();
         Iterator<GpsSatellite>sat = satellites.iterator();

         int i=0;

         while (sat.hasNext()) {
            count++;
             GpsSatellite satellite = sat.next();
             strGpsStats+= (i++) + ": " + satellite.getPrn() + "," + satellite.usedInFix() + "," 
             + satellite.getSnr() + "," + satellite.getAzimuth() + "," + satellite.getElevation()+ "\n\n";
             Log.v("value:"+"-", strGpsStats+= (i++) + ": " + satellite.getPrn() + "," + satellite.usedInFix() + "," 
                     + satellite.getSnr() + "," + satellite.getAzimuth() + "," + satellite.getElevation()+ "\n\n");
         }
         //tv.setText(strGpsStats);
         Log.v("satellite", "satellite " +count);
     }

    return count;       
 }
Run Code Online (Sandbox Code Playgroud)

在主要活动类中,我已经这样称呼它

  int satellites=gps.getSatellites();
Run Code Online (Sandbox Code Playgroud)

sco*_*ttt 1

有几件事可能会给您带来问题:

  • 您必须已请求许可ACCESS_COARSE_LOCATION
  • 您的设备必须启用 GPS 定位服务。
  • GPS 卫星必须是“可见的”。
  • GPS 硬件需要一段时间才能捕获卫星。通常的方法是等待系统通过使用 a 告诉您某些内容已更改 GpsStatus.Listener并等待事件onGpsStatusChanged