Files
AndroidAisMap/GPS_AIS_FIXES.md
T
2025-10-07 09:34:26 +03:00

3.9 KiB
Raw Blame History

🔧 Исправления 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 + AIS
  • android_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 данные не теряются! 🎉