Major architecture update

This commit is contained in:
2025-10-07 09:34:26 +03:00
parent 982e940b8d
commit a607133032
32 changed files with 6439 additions and 2061 deletions
+92
View File
@@ -0,0 +1,92 @@
# 🔧 Исправления GPS и AIS логики - ЗАВЕРШЕНО!
## ✅ Исправленные проблемы:
### 1. **Сохранение настроек не меняет поведение** ✅
#### **Проблема:**
При изменении настроек GPS режима (`hybrid`, `android_only`, `nmea_only`) изменения не применялись без перезапуска приложения.
#### **Решение:**
-**Добавлен перезапуск слушателей** в `setDataMode()`:
- Проверка изменения режима
- Вызов `restartListeners()` при изменении
-**Реализован метод `restartListeners()`**:
- Остановка всех слушателей
- Запуск нужных слушателей по режиму
- Логирование процесса
#### **Логика перезапуска:**
```java
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`: все сообщения пропускаются
#### **Код фильтрации:**
```java
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 данные не теряются!** 🎉