2026-05-21 12:38:18 +03:00
2026-05-20 08:49:14 +03:00
2026-05-21 12:38:18 +03:00
2026-05-20 08:49:14 +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%