public void onGpsStatusChanged(int state) { GpsStatus gpsStatus = locationManager.getGpsStatus(null); if (state == GpsStatus.GPS_EVENT_STOPPED) { hasFix = false; numSatellites = 0; updateSolution(LocationProvider.OUT_OF_SERVICE); } else if ((System.currentTimeMillis() - lastFixTimestamp) > 3000) { invalidateFix(); } if (state == GpsStatus.GPS_EVENT_STARTED) { // FIXME do what's needed updateSolution(LocationProvider.AVAILABLE); } gpsState = state; if (state == GpsStatus.GPS_EVENT_SATELLITE_STATUS && gpsStatus != null) { for (int j = 0; j < 36; j++) { /** Resetting all the satellites to non locked */ if ((satellites[j] != null)) { satellites[j].isLocked(false); } } Iterable<GpsSatellite> andSatellites = gpsStatus.getSatellites(); Iterator<GpsSatellite> sat = andSatellites.iterator(); int i = 0; while (sat.hasNext()) { GpsSatellite satellite = sat.next(); if (satellites[i] == null) { satellites[i] = new Satellite(); } if (i < 36) { satellites[i].isLocked(satellite.usedInFix()); satellites[i].id = i; satellites[i].azimut = satellite.getAzimuth(); satellites[i].elev = satellite.getElevation(); satellites[i].snr = (int) satellite.getSnr(); if (satellite.usedInFix()) { i++; } } } numSatellites = i; if (numSatellites > 0) { receiverList.receiveSatellites(satellites); } } // updateSolution(state); }
private void showSats() { int satNum = 0; StringBuilder builder = new StringBuilder(); for (GpsSatellite sat : gps.getSatellites()) { builder.append("Satellite Data: "); builder.append("\nnumber: "); builder.append(satNum); builder.append("\nAzimuth: "); builder.append(sat.getAzimuth()); builder.append("\nElevation: "); builder.append(sat.getElevation()); builder.append("\nSNR: "); builder.append(sat.getSnr()); builder.append("\nUsed in fix?: "); builder.append(sat.usedInFix()); log("\n\n" + builder.toString()); builder.delete(0, builder.length()); satNum++; } }
/////// GPS status callback public void onGpsStatusChanged(int status) { DataOutputStream file = fout[2]; long tim = System.currentTimeMillis(); // Get the status GpsStatus lStatus = null; lStatus = mLocMan.getGpsStatus(null); if (status == GpsStatus.GPS_EVENT_FIRST_FIX) { mLV.addtext("GPS_EVENT_FIRST_FIX - TTFX =" + lStatus.getTimeToFirstFix()); } else if (status == GpsStatus.GPS_EVENT_STARTED) { mLV.addtext("GPS_EVENT_STARTED " + tim); } else if (status == GpsStatus.GPS_EVENT_STOPPED) { mLV.addtext("GPS_EVENT_STOPPED " + tim); } if (lStatus != null) { if (file != null) { try { file.writeLong(tim); Iterable<GpsSatellite> satlist = lStatus.getSatellites(); for (GpsSatellite sat : satlist) { file.writeInt(sat.getPrn()); file.writeFloat(sat.getAzimuth()); file.writeFloat(sat.getElevation()); file.writeFloat(sat.getSnr()); file.writeBoolean(sat.hasAlmanac()); file.writeBoolean(sat.hasEphemeris()); file.writeBoolean(sat.usedInFix()); if (satlist.iterator().hasNext()) file.writeChar('@'); else file.writeChar('#'); } } catch (IOException e) { e.printStackTrace(); } } } }