Initial commit: AIS Map Android application

This commit is contained in:
ОС Программист
2025-09-02 15:58:16 +03:00
commit 629b403dd2
78 changed files with 9209 additions and 0 deletions
+157
View File
@@ -0,0 +1,157 @@
# AISMap - Приложение для отображения AIS и GPS данных на карте
## Описание
AISMap - это Android приложение для отображения данных о судах, полученных через AIS (Automatic Identification System) и GPS, на интерактивной карте. Приложение поддерживает несколько источников данных и различные SDK карт.
## Архитектура
### Модели данных
#### Vessel.java
Модель для нашего судна, содержащая:
- Координаты (широта, долгота)
- Курс и скорость
- Сила GPS сигнала
- Количество спутников
- Высота над уровнем моря
- Временная метка последнего обновления
#### AISVessel.java
Модель для AIS судов с расширенной информацией:
- MMSI (Maritime Mobile Service Identity)
- Название судна и позывной
- IMO номер и тип судна
- Размеры (длина, ширина, осадка)
- Пункт назначения и ETA
- Навигационный статус
### Контроллеры
#### NMEAParser.java
Парсер NMEA сообщений, поддерживающий:
- GGA (Global Positioning System Fix Data)
- RMC (Recommended Minimum Navigation Information)
- VTG (Course Over Ground and Ground Speed)
- AIS (Automatic Identification System)
- Валидация контрольных сумм
- Callback интерфейс для уведомлений
#### UDPListener.java
Контроллер для прослушивания UDP портов:
- Асинхронное прослушивание
- Настраиваемый порт
- Отправка и получение данных
- Обработка ошибок
#### AndroidNMEAListener.java
Контроллер для Android NMEA Listener:
- Использование встроенного GPS
- Поддержка старых версий Android
- Мониторинг статуса GPS
- Получение количества спутников
#### AppController.java
Главный контроллер, координирующий:
- Все источники данных
- Обновление моделей
- Взаимодействие с картой
- Управление жизненным циклом
### Интерфейс карт
#### MapInterface.java
Абстрактный интерфейс для карт:
- Добавление/обновление меток судов
- Управление слоями
- Обработка кликов
- Центрирование и зум
#### YandexMapImpl.java
Реализация для Яндекс.Карт:
- Использование API ключа
- Создание иконок судов
- Анимации перемещения
- Обработка событий
#### MapForgeImpl.java
Реализация для MapForge (офлайн карты):
- Работа с локальными картами
- Слои и маркеры
- Оптимизация производительности
## Источники данных
### UDP
- Порт по умолчанию: 10110 (стандартный для AIS)
- Настраиваемый порт
- Асинхронная обработка
### Android NMEA Listener
- Встроенный GPS модуль
- Прямой доступ к NMEA данным
- Единообразие с UDP данными
### BLE (планируется)
- Поддержка внешних GPS устройств
- Bluetooth Low Energy
- Автоматическое обнаружение
## Особенности
### Валидация данных
- Проверка контрольных сумм NMEA
- Фильтрация некорректных сообщений
- Логирование ошибок
### Производительность
- Асинхронная обработка данных
- Кэширование меток
- Оптимизация обновлений карты
### Расширяемость
- Модульная архитектура
- Поддержка новых источников данных
- Легкое добавление новых SDK карт
## Настройка
### Зависимости
```gradle
// Яндекс.Карты
implementation 'com.yandex.android:maps.mobile:4.4.0-full'
// MapForge (опционально)
implementation 'org.mapsforge:mapsforge-map-android:0.15.0'
```
### Разрешения
```xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```
### API ключи
- Яндекс.Карты: `9ae1917c-2049-4927-9d1e-29dd0d3e8ebc`
## Использование
1. Запустите приложение
2. Предоставьте разрешения на GPS
3. Включите GPS слушатель
4. При необходимости включите UDP слушатель
5. Используйте кнопки управления для навигации
## Планы развития
- [ ] Поддержка BLE устройств
- [ ] Расширенный декодер AIS
- [ ] Сохранение истории маршрутов
- [ ] Экспорт данных
- [ ] Настройки отображения
- [ ] Многоязычная поддержка
## Лицензия
Проект разработан для образовательных целей.