Это интерфейс, который я использую для получения Nmea и высоты, но когда вызывается onNmeaMessageListener, он не выполняет его. Я называю это с помощью gpsManager, который является переменной LocationManager, код не работает и не отображается как ошибка.
OnNmeaMessageListener onNmeaMessageListener = (nmea, timestamp) -> {
Log.d("TrackManager", " NMEA : " + nmea + " TimeStamp : " + timestamp);
if (trackStarted && !trackPaused) {
if (nmea.startsWith("$GPGGA") || nmea.startsWith("$GPRMC")) {
Log.d("TrackManager", "NMEA:" + nmea);
try {
out.write(nmea.getBytes());
if (continuesMode) {
dataOut.write(nmea.getBytes());
bufferedNMEALines++;
if (bufferedNMEALines >= 10) {
flushContinuesTrack();
//dataOut.reset();
bufferedNMEALines = 0;
}
} else {
outCompressed.write(nmea.getBytes());
}
// Log.d("TrackManager","NMEA:" + nmea);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (nmea.startsWith("$GPGGA")) {
String[] nmeaSplit = nmea.split(",");
if (nmeaSplit.length > 10) {
if (nmeaSplit[9].length() > 0) {
try {
mslAltitude = Float.parseFloat(nmeaSplit[9]);
} catch (NumberFormatException ex) {
mslAltitude = 0;
}
} else {
mslAltitude = 0.0f;
}
}
}
}
}
if (markStarted && hasFix() && nmea.startsWith("$GPRMC")) {
markProgress++;
trackListener.onMarkProgress(markProgress);
if (markProgress >= markMax) {
stopMark();
}
}
};
Вот как я это называю
gpsManager.addNmeaListener(onNmeaMessageListener);
РЕДАКТИРОВАТЬ
Декларация:
private LocationManager gpsManager;
Инициализировано в onCreate примерно так:
gpsManager = (LocationManager)
getSystemService(LOCATION_SERVICE);
Также получено Местоположение обновлено:
gpsManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER,
GPS_UPDATE_TIME, 0, gpsListener);