2014-04-25 11 views
5

Ho scritto così. Ma ottengo sempre 0. Per favore correggimi dove ho torto.Come ottenere il numero di satelliti utilizzati nel GPS in 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;  
} 

e nella classe principale attività che ho chiamato in questo modo

int satellites=gps.getSatellites(); 
+1

Come indicato nei documenti, è necessario chiamare getSatellites() in onGpsStatusChanged(). La ragione di questo è che devi aspettare una connessione GPS stabilita. –

+0

@ SteveBenett- puoi mostrarmi il codice. – ShutterSoul

risposta

1

Un paio di cose che potrebbero causare problemi:

  • Devi aver richiesto il permesso ACCESS_COARSE_LOCATION .
  • Il dispositivo deve disporre del servizio di localizzazione GPS abilitato.
  • I satelliti GPS devono essere "visibili".
  • L'hardware GPS richiede un certo periodo di tempo prima di acquisire i satelliti. Il solito modo è aspettare che il sistema ti dica che qualcosa è cambiato usando GpsStatus.Listener e aspettando l'evento onGpsStatusChanged.
+0

Tutte le impostazioni che ho già fatto. – ShutterSoul

Problemi correlati