According to docs for LocationManager.getGpsStatus(...) ...
This should only be called from the onGpsStatusChanged(int) callback to ensure that the data will be copied atomically.
Try to implement GpsStatus.Listener in your activity and override onGpsStatusChanged(int) . Example...
public class MyActivity extends Activity implements GpsStatus.Listener { LocationManager locationManager = null; TextView tv = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gps); tv = (TextView)(findViewById(R.id.Gpsinfo)); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationManager.addGpsStatusListener(this); } @Override public void onGpsStatusChanged(int) { GpsStatus gpsStatus = locationManager.getGpsStatus(null); if(gpsStatus != null) { Iterable<GpsSatellite>satellites = gpsStatus.getSatellites(); Iterator<GpsSatellite>sat = satellites.iterator(); int i=0; while (sat.hasNext()) { GpsSatellite satellite = sat.next(); strGpsStats+= (i++) + ": " + satellite.getPrn() + "," + satellite.usedInFix() + "," + satellite.getSnr() + "," + satellite.getAzimuth() + "," + satellite.getElevation()+ "\n\n"; } tv.setText(strGpsStats); } } }
source share