2014-04-25 15 views
5

Napisałem tak. Ale otrzymuję 0 zawsze. Proszę poprawić mnie tam, gdzie się mylę.Jak zdobyć liczbę satelitów używanych w systemie GPS w systemie Android?

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

aw głównej klasy aktywności Nazwałem go tak jak to

int satellites=gps.getSatellites(); 
+1

Jak wspomniano w dokumentach, należy wywołać metodę getSatellites() w trybie GpsStatusChanged(). Powodem tego jest to, że musisz poczekać na nawiązane połączenie GPS. –

+0

@ SteveBenett - możesz mi pokazać kod. – ShutterSoul

Odpowiedz

1

kilka rzeczy, które mogłyby spowodować problemy:

  • trzeba mieć wymagane uprawnienia ACCESS_COARSE_LOCATION .
  • Twoje urządzenie musi mieć włączoną usługę lokalizacji GPS.
  • Satelity GPS muszą być "widoczne".
  • Sprzęt GPS zajmuje trochę czasu przed nabyciem satelitów. Zwykle należy poczekać, aż system poinformuje cię, że coś się zmieniło, czekając na zdarzenie GpsStatus.Listener.
+0

Wszystkie ustawienia, które już zrobiłem. – ShutterSoul

Powiązane problemy