Grigo 982e940b8d feat: масштабный рефакторинг архитектуры AIS карты и UI компонентов
Новые векторные иконки:
- cog.xml: иконка шестеренки для настроек
- compass.xml: иконка компаса для навигации
- ownship.xml: иконка собственного судна
- targetlist.xml: иконка списка целей с текстом 'LIST'

Архитектурные изменения:
- MainActivity.java: +99/- строк - обновление UI логики
- AppController.java: +111/- строк - рефакторинг контроллера приложения
- MapLibreMapImpl.java: +525/- строк - значительные улучшения карты
- MapInterface.java: +10 строк - расширение интерфейса карты
- CursorOverlay.java: +329/- строк - улучшение курсора и оверлеев
- GeoUtils.java: +92 строк - новые гео-утилиты
- NavigationUtils.java: +81/- строк - оптимизация навигации
- VesselPathTracker.java: +18/- строк - улучшение трекинга судов
- MapForgeImpl.java, YandexMapImpl.java: обновления карт

UI изменения:
- activity_main.xml: +65/- строк - обновление главного layout
- cursor.xml: +16/- строк - улучшение курсора
- targetlist.xml: +39 строк - обновление иконки списка целей

Общий объем: +1087/-328 строк
Подготовка к новой архитектуре UI и картографических компонентов
2025-10-06 08:33:13 +03:00

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

Использование

  1. Запустите приложение
  2. Предоставьте разрешения на GPS
  3. Включите GPS слушатель
  4. При необходимости включите UDP слушатель
  5. Используйте кнопки управления для навигации

Планы развития

  • Поддержка BLE устройств
  • Расширенный декодер AIS
  • Сохранение истории маршрутов
  • Экспорт данных
  • Настройки отображения
  • Многоязычная поддержка

Лицензия

Проект разработан для образовательных целей.

S
Description
No description provided
Readme 34 MiB
Release v6 Latest
2026-05-21 09:40:58 +00:00
Languages
Java 93.8%
Python 6.2%