Saya mencoba untuk mendapatkan informasi satelit dari android dengan menulis kode seputar LocationManager.getGpsStatus(...) tapi tidak memberikan hasil apa pun, dapatkah ada yang menunjukkan bagaimana cara yang benar menerapkan kode tersebut?
Berdasarkan dokumentasi android, harusnya itu dipanggil di callback onGpsStatusChanged(int) untuk memastikan data dicopy secara atomic.
Sekarang cobalah implementasikan GpsStatus.Listener di class Activity mu dan overriding method onGpsStatusChanged(int). Masih belum jelas? coba perhatikan contoh kode di bawah ini.
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);
}
}
}
Selamat mencoba!