generated from Grigo/AndroidTemplate
158 lines
5.7 KiB
Markdown
158 lines
5.7 KiB
Markdown
# 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
|
|
- [ ] Сохранение истории маршрутов
|
|
- [ ] Экспорт данных
|
|
- [ ] Настройки отображения
|
|
- [ ] Многоязычная поддержка
|
|
|
|
## Лицензия
|
|
|
|
Проект разработан для образовательных целей.
|