2014-04-25 3 views
5

Ich habe so geschrieben. Aber ich bekomme immer 0. Bitte korrigiere mich wo ich falsch liege.Wie bekomme ich die Anzahl der Satelliten in GPS in Android verwendet?

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;  
} 

und in der Hauptaktivitätsklasse habe ich es wie dieses

int satellites=gps.getSatellites(); 
+1

Wie in den Dokumenten erwähnt, sollten Sie getSatables() in onGpsStatusChanged() aufrufen. Der Grund dafür ist, dass Sie auf eine bestehende GPS-Verbindung warten müssen. –

+0

@ SteveBenett- können Sie mir Code zeigen. – ShutterSoul

Antwort

1

ein paar Dinge genannt, die Probleme verursachen könnten:

  • Sie haben die ACCESS_COARSE_LOCATION Erlaubnis gebeten haben .
  • Ihr Gerät muss den GPS-Standortdienst aktiviert haben.
  • Die GPS-Satelliten müssen "sichtbar" sein.
  • Die GPS-Hardware benötigt einige Zeit, bevor die Satelliten erfasst werden. Der übliche Weg besteht darin, zu warten, bis das System Ihnen mitteilt, dass sich etwas geändert hat, indem Sie GpsStatus.Listener verwenden und auf das Ereignis onGpsStatusChanged warten.
+0

Alle Einstellungen, die ich bereits getan habe. – ShutterSoul