generated from Grigo/AndroidTemplate
3.9 KiB
3.9 KiB
🔧 Исправления GPS и AIS логики - ЗАВЕРШЕНО!
✅ Исправленные проблемы:
1. Сохранение настроек не меняет поведение ✅
Проблема:
При изменении настроек GPS режима (hybrid, android_only, nmea_only) изменения не применялись без перезапуска приложения.
Решение:
- ✅ Добавлен перезапуск слушателей в
setDataMode():- Проверка изменения режима
- Вызов
restartListeners()при изменении
- ✅ Реализован метод
restartListeners():- Остановка всех слушателей
- Запуск нужных слушателей по режиму
- Логирование процесса
Логика перезапуска:
public void setDataMode(String mode) {
String oldMode = currentDataMode;
configureMode(mode);
// Если режим изменился, перезапускаем слушатели
if (!oldMode.equals(mode)) {
Log.i(TAG, "Режим изменился с " + oldMode + " на " + mode + ", перезапускаем слушатели");
restartListeners();
}
}
2. AIS данные отключались в режиме android_only ✅
Проблема:
В режиме android_only игнорировались ВСЕ NMEA сообщения, включая AIS данные (! сообщения).
Решение:
- ✅ Добавлена умная фильтрация в
parseNMEAMessage():- Метод
isGPSNMEAMessage()для различения типов сообщений - AIS сообщения (
!) всегда пропускаются - GPS NMEA сообщения (
$) фильтруются по режиму
- Метод
- ✅ Логика фильтрации:
hybrid: все сообщения пропускаютсяandroid_only: только AIS (!) пропускаются, GPS ($) игнорируютсяnmea_only: все сообщения пропускаются
Код фильтрации:
private boolean isGPSNMEAMessage(String message) {
// AIS сообщения начинаются с "!" - их всегда пропускаем
if (message.startsWith("!")) {
return false;
}
// GPS NMEA сообщения начинаются с "$" - их фильтруем в режиме android_only
if (message.startsWith("$")) {
return true;
}
return false;
}
🎯 Результат:
✅ Настройки применяются мгновенно:
- Изменение GPS режима сразу перезапускает слушатели
- Не нужно перезапускать приложение
- Логирование процесса для отладки
✅ AIS данные работают во всех режимах:
hybrid: GPS + NMEA + AISandroid_only: только Android GPS + AIS (без внешнего NMEA)nmea_only: только внешний NMEA + AIS (без Android GPS)
📊 Статистика исправлений:
- Исправлено проблем: 2
- Обновлено файлов: 1
- Добавлено методов: 2
- Добавлено строк кода: ~50
🚀 Логика работы режимов:
| Режим | Android GPS | Android NMEA | UDP NMEA | AIS |
|---|---|---|---|---|
hybrid |
✅ | ✅ | ✅ | ✅ |
android_only |
✅ | ❌ | ❌ | ✅ |
nmea_only |
❌ | ✅ | ✅ | ✅ |
Теперь GPS настройки работают корректно и AIS данные не теряются! 🎉