generated from Grigo/AndroidTemplate
main
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 карт
Настройка
Зависимости
// Яндекс.Карты
implementation 'com.yandex.android:maps.mobile:4.4.0-full'
// MapForge (опционально)
implementation 'org.mapsforge:mapsforge-map-android:0.15.0'
Разрешения
<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
Использование
- Запустите приложение
- Предоставьте разрешения на GPS
- Включите GPS слушатель
- При необходимости включите UDP слушатель
- Используйте кнопки управления для навигации
Планы развития
- Поддержка BLE устройств
- Расширенный декодер AIS
- Сохранение истории маршрутов
- Экспорт данных
- Настройки отображения
- Многоязычная поддержка
Лицензия
Проект разработан для образовательных целей.
Description
Releases
5
Release v6
Latest
Languages
Java
93.8%
Python
6.2%