From b5aee265bceccd94da37b8440a39d9afd0277b79 Mon Sep 17 00:00:00 2001 From: grigo Date: Thu, 2 Oct 2025 09:15:33 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=BD=D0=BE=D0=B2=D0=B0=D1=8F=20=D0=B0?= =?UTF-8?q?=D1=80=D1=85=D0=B8=D1=82=D0=B5=D0=BA=D1=82=D1=83=D1=80=D0=B0=20?= =?UTF-8?q?UI=20=D0=B8=20=D1=80=D0=B0=D1=81=D1=88=D0=B8=D1=80=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D0=B0=D1=8F=20=D0=B2=D0=B8=D0=B7=D1=83=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20AIS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Архитектурные улучшения: - Внедрен UIRenderingCoordinator с централизованным throttling - Решены проблемы зависания UI через батчинг операций карты - Добавлен VesselPathController для отслеживания маршрутов - Реализован MapLibreMapImpl как альтернатива Яндекс.Картам Визуализация AIS: - Добавлены векторные иконки для всех типов судов - Разделение Class A/B судов с соответствующими иконками - Иконки навигационных статусов (anchor, moored, engine, sail) - Улучшенный CursorOverlay с информацией о судах Производительность: - Throttling UI обновлений (vessel: 500ms, AIS: 1s, paths: 2s) - Устранение утечек Handler объектов - Оптимизация GeoJSON операций в MapLibre --- .idea/deploymentTargetSelector.xml | 4 +- .idea/vcs.xml | 2 +- ARCHITECTURE_SUMMARY.md | 74 + MAP_HANG_REAL_FIX.md | 94 + NEW_ARCHITECTURE.md | 77 + UI_HANG_FIX_SUMMARY.md | 116 ++ UI_PERFORMANCE_OPTIMIZATIONS.md | 95 + app/build.gradle | 3 + app/src/main/AndroidManifest.xml | 6 +- .../aismap/AisTargetsActivity.java | 48 + .../aismap/AisTargetsAdapter.java | 49 +- .../com/grigowashere/aismap/MainActivity.java | 837 +++++++- .../grigowashere/aismap/SettingsActivity.java | 92 + .../aismap/controllers/AppController.java | 483 ++++- .../controllers/GPSLocationListener.java | 5 +- .../aismap/controllers/MapController.java | 52 +- .../aismap/controllers/NMEAParser.java | 403 ++-- .../controllers/VesselPathController.java | 428 ++++ .../grigowashere/aismap/data/Repository.java | 16 + .../aismap/maps/MapForgeImpl.java | 88 + .../aismap/maps/MapInterface.java | 35 + .../aismap/maps/MapLibreMapImpl.java | 1854 +++++++++++++++++ .../aismap/maps/VesselPathTracker.java | 59 +- .../aismap/maps/YandexMapImpl.java | 102 + .../aismap/models/VesselPathPoint.java | 128 ++ .../aismap/sensors/CompassSensor.java | 16 + .../aismap/services/AISForegroundService.java | 54 +- .../aismap/ui/UIDataChangeNotifier.java | 55 + .../aismap/ui/UIRenderingCoordinator.java | 278 +++ .../grigowashere/aismap/utils/LogSender.java | 25 +- .../aismap/utils/NavigationUtils.java | 127 ++ .../aismap/utils/SettingsManager.java | 60 + .../aismap/view/CoordinatesDockWidget.java | 2 +- .../aismap/view/CursorOverlay.java | 276 +++ app/src/main/res/drawable/achor.xml | 21 + app/src/main/res/drawable/base_station.xml | 26 + app/src/main/res/drawable/cursor_cross.xml | 28 + app/src/main/res/drawable/cursorcross.xml | 62 + app/src/main/res/drawable/engine.xml | 61 + app/src/main/res/drawable/fishing.xml | 22 + app/src/main/res/drawable/green_buey.xml | 26 + app/src/main/res/drawable/moored.xml | 26 + .../main/res/drawable/panel_background.xml | 11 + app/src/main/res/drawable/red_buey.xml | 26 + app/src/main/res/drawable/sail.xml | 26 + app/src/main/res/drawable/target_a_cargo.xml | 18 + .../main/res/drawable/target_a_fishing.xml | 18 + app/src/main/res/drawable/target_a_navy.xml | 18 + app/src/main/res/drawable/target_a_other.xml | 18 + .../main/res/drawable/target_a_passenger.xml | 18 + .../main/res/drawable/target_a_pleasure.xml | 18 + app/src/main/res/drawable/target_a_tanker.xml | 18 + app/src/main/res/drawable/target_a_tug.xml | 18 + app/src/main/res/drawable/target_b_cargo.xml | 18 + .../main/res/drawable/target_b_fishing.xml | 18 + app/src/main/res/drawable/target_b_navy.xml | 18 + app/src/main/res/drawable/target_b_other.xml | 18 + .../main/res/drawable/target_b_passenger.xml | 18 + .../main/res/drawable/target_b_pleasure.xml | 18 + app/src/main/res/drawable/target_b_tanker.xml | 18 + app/src/main/res/drawable/target_b_tug.xml | 18 + .../main/res/layout/activity_ais_targets.xml | 15 +- app/src/main/res/layout/activity_main.xml | 3 +- app/src/main/res/layout/activity_settings.xml | 243 +++ .../res/layout/bottom_sheet_ais_vessel.xml | 24 + app/src/main/res/layout/cursor.xml | 150 ++ app/src/main/res/layout/item_ais_target.xml | 16 + app/src/main/res/menu/main_menu.xml | 12 + ourcesRep'; git diff --stat | 23 + rawAssets/SVG/Engine.svg | 47 + rawAssets/SVG/Moored.svg | 19 + rawAssets/SVG/SVG/Engine.svg | 47 + rawAssets/SVG/SVG/Moored.svg | 19 + rawAssets/SVG/SVG/achor.svg | 18 + rawAssets/SVG/SVG/cog.svg | 16 + rawAssets/SVG/SVG/cursor.svg | 60 + rawAssets/SVG/SVG/fishing.svg | 16 + rawAssets/SVG/SVG/fishing_1.svg | 24 + rawAssets/SVG/SVG/sail.svg | 22 + rawAssets/SVG/SVG/Ресурс 8.svg | 18 + rawAssets/SVG/achor.svg | 18 + rawAssets/SVG/base_station.svg | 29 + rawAssets/SVG/buey.svg | 30 + rawAssets/SVG/fishing.svg | 24 + rawAssets/SVG/sail.svg | 22 + 85 files changed, 7132 insertions(+), 449 deletions(-) create mode 100644 ARCHITECTURE_SUMMARY.md create mode 100644 MAP_HANG_REAL_FIX.md create mode 100644 NEW_ARCHITECTURE.md create mode 100644 UI_HANG_FIX_SUMMARY.md create mode 100644 UI_PERFORMANCE_OPTIMIZATIONS.md create mode 100644 app/src/main/java/com/grigowashere/aismap/controllers/VesselPathController.java create mode 100644 app/src/main/java/com/grigowashere/aismap/maps/MapLibreMapImpl.java create mode 100644 app/src/main/java/com/grigowashere/aismap/models/VesselPathPoint.java create mode 100644 app/src/main/java/com/grigowashere/aismap/ui/UIDataChangeNotifier.java create mode 100644 app/src/main/java/com/grigowashere/aismap/ui/UIRenderingCoordinator.java create mode 100644 app/src/main/java/com/grigowashere/aismap/utils/NavigationUtils.java create mode 100644 app/src/main/java/com/grigowashere/aismap/view/CursorOverlay.java create mode 100644 app/src/main/res/drawable/achor.xml create mode 100644 app/src/main/res/drawable/base_station.xml create mode 100644 app/src/main/res/drawable/cursor_cross.xml create mode 100644 app/src/main/res/drawable/cursorcross.xml create mode 100644 app/src/main/res/drawable/engine.xml create mode 100644 app/src/main/res/drawable/fishing.xml create mode 100644 app/src/main/res/drawable/green_buey.xml create mode 100644 app/src/main/res/drawable/moored.xml create mode 100644 app/src/main/res/drawable/panel_background.xml create mode 100644 app/src/main/res/drawable/red_buey.xml create mode 100644 app/src/main/res/drawable/sail.xml create mode 100644 app/src/main/res/drawable/target_a_cargo.xml create mode 100644 app/src/main/res/drawable/target_a_fishing.xml create mode 100644 app/src/main/res/drawable/target_a_navy.xml create mode 100644 app/src/main/res/drawable/target_a_other.xml create mode 100644 app/src/main/res/drawable/target_a_passenger.xml create mode 100644 app/src/main/res/drawable/target_a_pleasure.xml create mode 100644 app/src/main/res/drawable/target_a_tanker.xml create mode 100644 app/src/main/res/drawable/target_a_tug.xml create mode 100644 app/src/main/res/drawable/target_b_cargo.xml create mode 100644 app/src/main/res/drawable/target_b_fishing.xml create mode 100644 app/src/main/res/drawable/target_b_navy.xml create mode 100644 app/src/main/res/drawable/target_b_other.xml create mode 100644 app/src/main/res/drawable/target_b_passenger.xml create mode 100644 app/src/main/res/drawable/target_b_pleasure.xml create mode 100644 app/src/main/res/drawable/target_b_tanker.xml create mode 100644 app/src/main/res/drawable/target_b_tug.xml create mode 100644 app/src/main/res/layout/cursor.xml create mode 100644 ourcesRep'; git diff --stat create mode 100644 rawAssets/SVG/Engine.svg create mode 100644 rawAssets/SVG/Moored.svg create mode 100644 rawAssets/SVG/SVG/Engine.svg create mode 100644 rawAssets/SVG/SVG/Moored.svg create mode 100644 rawAssets/SVG/SVG/achor.svg create mode 100644 rawAssets/SVG/SVG/cog.svg create mode 100644 rawAssets/SVG/SVG/cursor.svg create mode 100644 rawAssets/SVG/SVG/fishing.svg create mode 100644 rawAssets/SVG/SVG/fishing_1.svg create mode 100644 rawAssets/SVG/SVG/sail.svg create mode 100644 rawAssets/SVG/SVG/Ресурс 8.svg create mode 100644 rawAssets/SVG/achor.svg create mode 100644 rawAssets/SVG/base_station.svg create mode 100644 rawAssets/SVG/buey.svg create mode 100644 rawAssets/SVG/fishing.svg create mode 100644 rawAssets/SVG/sail.svg diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index 8d22e48..cf18479 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,10 +4,10 @@