generated from Grigo/AndroidTemplate
Initial commit: AIS Map Android application
This commit is contained in:
@@ -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
|
||||
- [ ] Сохранение истории маршрутов
|
||||
- [ ] Экспорт данных
|
||||
- [ ] Настройки отображения
|
||||
- [ ] Многоязычная поддержка
|
||||
|
||||
## Лицензия
|
||||
|
||||
Проект разработан для образовательных целей.
|
||||
Reference in New Issue
Block a user