From 832273f928df57e97c2741224a703b4cb1b74d70 Mon Sep 17 00:00:00 2001 From: Andrei Shkrob Date: Sat, 20 Sep 2025 17:27:03 +0200 Subject: [PATCH] [android-auto] Refactor SurfaceRendered Created base Renderer class Rename SurfaceRenderer -> SurfaceRendererLegacy Signed-off-by: Andrei Shkrob --- .../app/organicmaps/car/CarAppSession.java | 7 +- .../organicmaps/car/renderer/Renderer.java | 125 ++++++++++++++ .../SurfaceCallbackLegacy.java} | 154 +++--------------- .../car/renderer/SurfaceRendererLegacy.java | 90 ++++++++++ .../car/screens/CategoriesScreen.java | 4 +- .../car/screens/FreeDriveScreen.java | 4 +- .../organicmaps/car/screens/MapScreen.java | 4 +- .../car/screens/NavigationScreen.java | 6 +- .../organicmaps/car/screens/PlaceScreen.java | 6 +- .../car/screens/base/BaseMapScreen.java | 8 +- .../bookmarks/BookmarkCategoriesScreen.java | 4 +- .../screens/bookmarks/BookmarksScreen.java | 4 +- .../car/screens/bookmarks/SortingScreen.java | 4 +- .../car/screens/search/SearchOnMapScreen.java | 6 +- .../car/screens/search/SearchScreen.java | 6 +- .../settings/DrivingOptionsScreen.java | 4 +- .../car/screens/settings/HelpScreen.java | 4 +- .../car/screens/settings/SettingsScreen.java | 4 +- .../car/screens/settings/ThemeScreen.java | 4 +- .../app/organicmaps/car/util/IntentUtils.java | 8 +- .../app/organicmaps/car/util/UiHelpers.java | 18 +- 21 files changed, 297 insertions(+), 177 deletions(-) create mode 100644 android/app/src/main/java/app/organicmaps/car/renderer/Renderer.java rename android/app/src/main/java/app/organicmaps/car/{SurfaceRenderer.java => renderer/SurfaceCallbackLegacy.java} (53%) create mode 100644 android/app/src/main/java/app/organicmaps/car/renderer/SurfaceRendererLegacy.java diff --git a/android/app/src/main/java/app/organicmaps/car/CarAppSession.java b/android/app/src/main/java/app/organicmaps/car/CarAppSession.java index 594869b8f..b86e2796f 100644 --- a/android/app/src/main/java/app/organicmaps/car/CarAppSession.java +++ b/android/app/src/main/java/app/organicmaps/car/CarAppSession.java @@ -12,6 +12,8 @@ import androidx.lifecycle.DefaultLifecycleObserver; import androidx.lifecycle.LifecycleOwner; import app.organicmaps.MwmApplication; import app.organicmaps.R; +import app.organicmaps.car.renderer.Renderer; +import app.organicmaps.car.renderer.SurfaceRendererLegacy; import app.organicmaps.car.screens.ErrorScreen; import app.organicmaps.car.screens.MapPlaceholderScreen; import app.organicmaps.car.screens.MapScreen; @@ -49,8 +51,9 @@ public final class CarAppSession extends Session implements DefaultLifecycleObse @Nullable private final SessionInfo mSessionInfo; + @SuppressWarnings("NotNullFieldNotInitialized") @NonNull - private final SurfaceRenderer mSurfaceRenderer; + private Renderer mSurfaceRenderer; @NonNull private final ScreenManager mScreenManager; @SuppressWarnings("NotNullFieldNotInitialized") @@ -67,7 +70,6 @@ public final class CarAppSession extends Session implements DefaultLifecycleObse { getLifecycle().addObserver(this); mSessionInfo = sessionInfo; - mSurfaceRenderer = new SurfaceRenderer(getCarContext(), getLifecycle()); mScreenManager = getCarContext().getCarService(ScreenManager.class); mCurrentCountryChangedListener = new CurrentCountryChangedListener(); } @@ -111,6 +113,7 @@ public final class CarAppSession extends Session implements DefaultLifecycleObse public void onCreate(@NonNull LifecycleOwner owner) { Logger.d(TAG); + mSurfaceRenderer = new SurfaceRendererLegacy(getCarContext(), getLifecycle()); mSensorsManager = new CarSensorsManager(getCarContext()); mDisplayManager = MwmApplication.from(getCarContext()).getDisplayManager(); mDisplayManager.addListener(DisplayType.Car, this); diff --git a/android/app/src/main/java/app/organicmaps/car/renderer/Renderer.java b/android/app/src/main/java/app/organicmaps/car/renderer/Renderer.java new file mode 100644 index 000000000..992d47498 --- /dev/null +++ b/android/app/src/main/java/app/organicmaps/car/renderer/Renderer.java @@ -0,0 +1,125 @@ +package app.organicmaps.car.renderer; + +import androidx.annotation.CallSuper; +import androidx.annotation.NonNull; +import androidx.car.app.AppManager; +import androidx.car.app.CarContext; +import androidx.car.app.SurfaceCallback; +import androidx.lifecycle.DefaultLifecycleObserver; +import androidx.lifecycle.Lifecycle; +import androidx.lifecycle.LifecycleOwner; +import app.organicmaps.sdk.Map; +import app.organicmaps.sdk.MapRenderingListener; +import app.organicmaps.sdk.display.DisplayManager; +import app.organicmaps.sdk.location.LocationHelper; +import app.organicmaps.sdk.settings.UnitLocale; +import app.organicmaps.sdk.util.log.Logger; + +public abstract class Renderer implements DefaultLifecycleObserver +{ + private static final String TAG = Renderer.class.getSimpleName(); + + @NonNull + protected final CarContext mCarContext; + + @NonNull + protected final DisplayManager mDisplayManager; + + @NonNull + protected final LocationHelper mLocationHelper; + + private boolean mIsRunning; + + private SurfaceCallback mSurfaceCallback; + + @NonNull + private final MapRenderingListener mMapRenderingListener = new MapRenderingListener() { + @Override + public void onRenderingCreated() + { + UnitLocale.initializeCurrentUnits(); + } + }; + + public Renderer(@NonNull CarContext carContext, @NonNull DisplayManager displayManager, + @NonNull LocationHelper locationHelper, @NonNull Lifecycle lifecycle) + { + Logger.d(TAG, "SurfaceRenderer()"); + mCarContext = carContext; + mDisplayManager = displayManager; + mLocationHelper = locationHelper; + mIsRunning = true; + lifecycle.addObserver(this); + } + + protected void setSurfaceCallback(@NonNull SurfaceCallback surfaceCallback) + { + mSurfaceCallback = surfaceCallback; + } + + public boolean isRenderingActive() + { + return mIsRunning; + } + + protected MapRenderingListener getMapRenderingListener() + { + return mMapRenderingListener; + } + + @CallSuper + @Override + public void onCreate(@NonNull LifecycleOwner owner) + { + Logger.d(TAG); + if (mSurfaceCallback == null) + throw new IllegalStateException("SurfaceCallback must be set before onCreate()"); + mCarContext.getCarService(AppManager.class).setSurfaceCallback(mSurfaceCallback); + } + + @CallSuper + @Override + public void onDestroy(@NonNull LifecycleOwner owner) + { + Logger.d(TAG); + mCarContext.getCarService(AppManager.class).setSurfaceCallback(null); + } + + @CallSuper + public void enable() + { + if (isRenderingActive()) + { + Logger.d(TAG, "Already enabled"); + return; + } + + if (mSurfaceCallback == null) + throw new IllegalStateException("SurfaceCallback must be set before enable()"); + mCarContext.getCarService(AppManager.class).setSurfaceCallback(mSurfaceCallback); + mIsRunning = true; + } + + @CallSuper + public void disable() + { + if (!isRenderingActive()) + { + Logger.d(TAG, "Already disabled"); + return; + } + + mCarContext.getCarService(AppManager.class).setSurfaceCallback(null); + mIsRunning = false; + } + + public void onZoomIn() + { + Map.zoomIn(); + } + + public void onZoomOut() + { + Map.zoomOut(); + } +} diff --git a/android/app/src/main/java/app/organicmaps/car/SurfaceRenderer.java b/android/app/src/main/java/app/organicmaps/car/renderer/SurfaceCallbackLegacy.java similarity index 53% rename from android/app/src/main/java/app/organicmaps/car/SurfaceRenderer.java rename to android/app/src/main/java/app/organicmaps/car/renderer/SurfaceCallbackLegacy.java index da4d36806..3e15d5ea0 100644 --- a/android/app/src/main/java/app/organicmaps/car/SurfaceRenderer.java +++ b/android/app/src/main/java/app/organicmaps/car/renderer/SurfaceCallbackLegacy.java @@ -1,50 +1,41 @@ -package app.organicmaps.car; - -import static app.organicmaps.sdk.display.DisplayType.Car; +package app.organicmaps.car.renderer; import android.graphics.Rect; import android.view.Surface; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.car.app.AppManager; import androidx.car.app.CarContext; import androidx.car.app.SurfaceCallback; import androidx.car.app.SurfaceContainer; -import androidx.lifecycle.DefaultLifecycleObserver; -import androidx.lifecycle.Lifecycle; -import androidx.lifecycle.LifecycleOwner; -import app.organicmaps.MwmApplication; import app.organicmaps.sdk.Framework; import app.organicmaps.sdk.Map; -import app.organicmaps.sdk.MapRenderingListener; -import app.organicmaps.sdk.settings.UnitLocale; +import app.organicmaps.sdk.location.LocationHelper; import app.organicmaps.sdk.util.log.Logger; -public class SurfaceRenderer implements DefaultLifecycleObserver, SurfaceCallback, MapRenderingListener +public class SurfaceCallbackLegacy implements SurfaceCallback { - private static final String TAG = SurfaceRenderer.class.getSimpleName(); + private static final String TAG = SurfaceCallbackLegacy.class.getSimpleName(); @NonNull - private final CarContext mCarContext; + protected final CarContext mCarContext; @NonNull - private final Map mMap = new Map(Car); + private final Map mMap; @NonNull - private Rect mVisibleArea = new Rect(); + private final LocationHelper mLocationHelper; @Nullable private Surface mSurface = null; - private boolean mIsRunning; + @NonNull + private Rect mVisibleArea = new Rect(); - public SurfaceRenderer(@NonNull CarContext carContext, @NonNull Lifecycle lifecycle) + public SurfaceCallbackLegacy(@NonNull CarContext carContext, @NonNull Map map, @NonNull LocationHelper locationHelper) { - Logger.d(TAG, "SurfaceRenderer()"); mCarContext = carContext; - mIsRunning = true; - lifecycle.addObserver(this); - mMap.setMapRenderingListener(this); + mMap = map; + mLocationHelper = locationHelper; } @Override @@ -56,13 +47,25 @@ public class SurfaceRenderer implements DefaultLifecycleObserver, SurfaceCallbac mSurface.release(); mSurface = surfaceContainer.getSurface(); - mMap.setLocationHelper(MwmApplication.from(mCarContext).getLocationHelper()); + mMap.setLocationHelper(mLocationHelper); mMap.onSurfaceCreated(mCarContext, mSurface, new Rect(0, 0, surfaceContainer.getWidth(), surfaceContainer.getHeight()), surfaceContainer.getDpi()); mMap.updateBottomWidgetsOffset(mCarContext, -1, -1); } + @Override + public void onSurfaceDestroyed(@NonNull SurfaceContainer surfaceContainer) + { + Logger.d(TAG, "Surface destroyed"); + if (mSurface != null) + { + mSurface.release(); + mSurface = null; + } + mMap.onSurfaceDestroyed(false); + } + @Override public void onVisibleAreaChanged(@NonNull Rect visibleArea) { @@ -84,57 +87,6 @@ public class SurfaceRenderer implements DefaultLifecycleObserver, SurfaceCallbac Framework.nativeSetVisibleRect(mVisibleArea.left, mVisibleArea.top, mVisibleArea.right, mVisibleArea.bottom); } - @Override - public void onSurfaceDestroyed(@NonNull SurfaceContainer surfaceContainer) - { - Logger.d(TAG, "Surface destroyed"); - if (mSurface != null) - { - mSurface.release(); - mSurface = null; - } - mMap.onSurfaceDestroyed(false); - } - - @Override - public void onCreate(@NonNull LifecycleOwner owner) - { - Logger.d(TAG); - mCarContext.getCarService(AppManager.class).setSurfaceCallback(this); - mMap.onCreate(false); - } - - @Override - public void onStart(@NonNull LifecycleOwner owner) - { - Logger.d(TAG); - mMap.onStart(); - } - - @Override - public void onResume(@NonNull LifecycleOwner owner) - { - Logger.d(TAG); - mMap.onResume(); - if (MwmApplication.from(mCarContext).getDisplayManager().isCarDisplayUsed()) - mMap.updateMyPositionRoutingOffset(0); - } - - @Override - public void onPause(@NonNull LifecycleOwner owner) - { - Logger.d(TAG); - mMap.onPause(); - } - - @Override - public void onStop(@NonNull LifecycleOwner owner) - { - Logger.d(TAG); - mMap.onStop(); - mMap.setCallbackUnsupported(null); - } - @Override public void onScroll(float distanceX, float distanceY) { @@ -146,16 +98,7 @@ public class SurfaceRenderer implements DefaultLifecycleObserver, SurfaceCallbac public void onFling(float velocityX, float velocityY) { Logger.d(TAG, "velocityX: " + velocityX + ", velocityY: " + velocityY); - } - - public void onZoomIn() - { - Map.zoomIn(); - } - - public void onZoomOut() - { - Map.zoomOut(); + // TODO: Implement fling in the native code. } @Override @@ -185,49 +128,4 @@ public class SurfaceRenderer implements DefaultLifecycleObserver, SurfaceCallbac Logger.d(TAG, "x: " + x + ", y: " + y); Map.onClick(x, y); } - - public void disable() - { - if (!mIsRunning) - { - Logger.d(TAG, "Already disabled"); - return; - } - - mCarContext.getCarService(AppManager.class).setSurfaceCallback(null); - mMap.onPause(); - mMap.onSurfaceDestroyed(false); - mMap.onStop(); - mMap.setCallbackUnsupported(null); - mMap.setMapRenderingListener(null); - - mIsRunning = false; - } - - public void enable() - { - if (mIsRunning) - { - Logger.d(TAG, "Already enabled"); - return; - } - - mCarContext.getCarService(AppManager.class).setSurfaceCallback(this); - mMap.onStart(); - mMap.setMapRenderingListener(this); - mMap.updateMyPositionRoutingOffset(0); - - mIsRunning = true; - } - - public boolean isRenderingActive() - { - return mIsRunning; - } - - @Override - public void onRenderingCreated() - { - UnitLocale.initializeCurrentUnits(); - } } diff --git a/android/app/src/main/java/app/organicmaps/car/renderer/SurfaceRendererLegacy.java b/android/app/src/main/java/app/organicmaps/car/renderer/SurfaceRendererLegacy.java new file mode 100644 index 000000000..da8093104 --- /dev/null +++ b/android/app/src/main/java/app/organicmaps/car/renderer/SurfaceRendererLegacy.java @@ -0,0 +1,90 @@ +package app.organicmaps.car.renderer; + +import static app.organicmaps.sdk.display.DisplayType.Car; + +import androidx.annotation.NonNull; +import androidx.car.app.CarContext; +import androidx.lifecycle.Lifecycle; +import androidx.lifecycle.LifecycleOwner; +import app.organicmaps.MwmApplication; +import app.organicmaps.sdk.Map; +import app.organicmaps.sdk.util.log.Logger; + +public class SurfaceRendererLegacy extends Renderer +{ + private static final String TAG = SurfaceRendererLegacy.class.getSimpleName(); + + @NonNull + private final Map mMap = new Map(Car); + + public SurfaceRendererLegacy(@NonNull CarContext carContext, @NonNull Lifecycle lifecycle) + { + super(carContext, MwmApplication.from(carContext).getDisplayManager(), + MwmApplication.from(carContext).getLocationHelper(), lifecycle); + setSurfaceCallback(new SurfaceCallbackLegacy(mCarContext, mMap, mLocationHelper)); + mMap.setMapRenderingListener(getMapRenderingListener()); + } + + @Override + public void onCreate(@NonNull LifecycleOwner owner) + { + super.onCreate(owner); + mMap.onCreate(false); + } + + @Override + public void onStart(@NonNull LifecycleOwner owner) + { + Logger.d(TAG); + if (mDisplayManager.isCarDisplayUsed()) + mMap.onStart(); + } + + @Override + public void onResume(@NonNull LifecycleOwner owner) + { + Logger.d(TAG); + if (mDisplayManager.isCarDisplayUsed()) + { + mMap.onResume(); + mMap.updateMyPositionRoutingOffset(0); + } + } + + @Override + public void onPause(@NonNull LifecycleOwner owner) + { + Logger.d(TAG); + if (mDisplayManager.isCarDisplayUsed()) + mMap.onPause(); + } + + @Override + public void onStop(@NonNull LifecycleOwner owner) + { + Logger.d(TAG); + if (mDisplayManager.isCarDisplayUsed()) + mMap.onStop(); + } + + @Override + public void enable() + { + super.enable(); + + mMap.onStart(); + mMap.setMapRenderingListener(getMapRenderingListener()); + mMap.updateMyPositionRoutingOffset(0); + } + + @Override + public void disable() + { + super.disable(); + + mMap.onPause(); + mMap.onSurfaceDestroyed(false); + mMap.onStop(); + mMap.setMapRenderingListener(null); + } +} diff --git a/android/app/src/main/java/app/organicmaps/car/screens/CategoriesScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/CategoriesScreen.java index df58d5fe2..c1d18bc8f 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/CategoriesScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/CategoriesScreen.java @@ -15,7 +15,7 @@ import androidx.car.app.model.Template; import androidx.car.app.navigation.model.MapWithContentTemplate; import androidx.core.graphics.drawable.IconCompat; import app.organicmaps.R; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.car.screens.search.SearchOnMapScreen; import app.organicmaps.car.util.UiHelpers; @@ -37,7 +37,7 @@ public class CategoriesScreen extends BaseMapScreen private final int MAX_CATEGORIES_SIZE; - public CategoriesScreen(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer) + public CategoriesScreen(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer) { super(carContext, surfaceRenderer); final ConstraintManager constraintManager = getCarContext().getCarService(ConstraintManager.class); diff --git a/android/app/src/main/java/app/organicmaps/car/screens/FreeDriveScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/FreeDriveScreen.java index 7772ce041..3e09732d6 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/FreeDriveScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/FreeDriveScreen.java @@ -9,13 +9,13 @@ import androidx.car.app.model.Template; import androidx.car.app.navigation.model.NavigationTemplate; import androidx.core.graphics.drawable.IconCompat; import app.organicmaps.R; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.car.util.UiHelpers; public class FreeDriveScreen extends BaseMapScreen { - public FreeDriveScreen(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer) + public FreeDriveScreen(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer) { super(carContext, surfaceRenderer); } diff --git a/android/app/src/main/java/app/organicmaps/car/screens/MapScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/MapScreen.java index e27ef4beb..a5e5603d3 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/MapScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/MapScreen.java @@ -14,7 +14,7 @@ import androidx.car.app.model.Template; import androidx.car.app.navigation.model.MapWithContentTemplate; import androidx.core.graphics.drawable.IconCompat; import app.organicmaps.R; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.car.screens.bookmarks.BookmarkCategoriesScreen; import app.organicmaps.car.screens.search.SearchScreen; @@ -24,7 +24,7 @@ import app.organicmaps.car.util.UiHelpers; public class MapScreen extends BaseMapScreen { - public MapScreen(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer) + public MapScreen(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer) { super(carContext, surfaceRenderer); } diff --git a/android/app/src/main/java/app/organicmaps/car/screens/NavigationScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/NavigationScreen.java index 64950d908..166e999b3 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/NavigationScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/NavigationScreen.java @@ -20,7 +20,7 @@ import androidx.lifecycle.LifecycleOwner; import app.organicmaps.MwmApplication; import app.organicmaps.R; import app.organicmaps.car.CarAppService; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.car.screens.settings.DrivingOptionsScreen; import app.organicmaps.car.util.Colors; @@ -261,9 +261,9 @@ public class NavigationScreen extends BaseMapScreen implements RoutingController @NonNull private final CarContext mCarContext; @NonNull - private final SurfaceRenderer mSurfaceRenderer; + private final Renderer mSurfaceRenderer; - public Builder(@NonNull final CarContext carContext, @NonNull final SurfaceRenderer surfaceRenderer) + public Builder(@NonNull final CarContext carContext, @NonNull final Renderer surfaceRenderer) { mCarContext = carContext; mSurfaceRenderer = surfaceRenderer; diff --git a/android/app/src/main/java/app/organicmaps/car/screens/PlaceScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/PlaceScreen.java index 96489d783..b2a492c26 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/PlaceScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/PlaceScreen.java @@ -26,7 +26,7 @@ import androidx.core.graphics.drawable.IconCompat; import androidx.lifecycle.LifecycleOwner; import app.organicmaps.MwmApplication; import app.organicmaps.R; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.car.screens.download.DownloadMapsScreenBuilder; import app.organicmaps.car.screens.settings.DrivingOptionsScreen; @@ -340,11 +340,11 @@ public class PlaceScreen extends BaseMapScreen implements OnBackPressedCallback. @NonNull private final CarContext mCarContext; @NonNull - private final SurfaceRenderer mSurfaceRenderer; + private final Renderer mSurfaceRenderer; @Nullable private MapObject mMapObject; - public Builder(@NonNull final CarContext carContext, @NonNull final SurfaceRenderer surfaceRenderer) + public Builder(@NonNull final CarContext carContext, @NonNull final Renderer surfaceRenderer) { mCarContext = carContext; mSurfaceRenderer = surfaceRenderer; diff --git a/android/app/src/main/java/app/organicmaps/car/screens/base/BaseMapScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/base/BaseMapScreen.java index f502074df..88eb2b77f 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/base/BaseMapScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/base/BaseMapScreen.java @@ -2,21 +2,21 @@ package app.organicmaps.car.screens.base; import androidx.annotation.NonNull; import androidx.car.app.CarContext; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; public abstract class BaseMapScreen extends BaseScreen { @NonNull - private final SurfaceRenderer mSurfaceRenderer; + private final Renderer mSurfaceRenderer; - public BaseMapScreen(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer) + public BaseMapScreen(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer) { super(carContext); mSurfaceRenderer = surfaceRenderer; } @NonNull - protected SurfaceRenderer getSurfaceRenderer() + protected Renderer getSurfaceRenderer() { return mSurfaceRenderer; } diff --git a/android/app/src/main/java/app/organicmaps/car/screens/bookmarks/BookmarkCategoriesScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/bookmarks/BookmarkCategoriesScreen.java index 52c8e722a..8ca4714f9 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/bookmarks/BookmarkCategoriesScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/bookmarks/BookmarkCategoriesScreen.java @@ -11,7 +11,7 @@ import androidx.car.app.model.Row; import androidx.car.app.model.Template; import androidx.car.app.navigation.model.MapWithContentTemplate; import app.organicmaps.R; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.car.util.UiHelpers; import app.organicmaps.sdk.bookmarks.data.BookmarkCategory; @@ -23,7 +23,7 @@ public class BookmarkCategoriesScreen extends BaseMapScreen { private final int MAX_CATEGORIES_SIZE; - public BookmarkCategoriesScreen(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer) + public BookmarkCategoriesScreen(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer) { super(carContext, surfaceRenderer); final ConstraintManager constraintManager = getCarContext().getCarService(ConstraintManager.class); diff --git a/android/app/src/main/java/app/organicmaps/car/screens/bookmarks/BookmarksScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/bookmarks/BookmarksScreen.java index 218483c48..3545a0b24 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/bookmarks/BookmarksScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/bookmarks/BookmarksScreen.java @@ -13,7 +13,7 @@ import androidx.car.app.navigation.model.MapWithContentTemplate; import androidx.core.graphics.drawable.IconCompat; import androidx.lifecycle.LifecycleOwner; import app.organicmaps.R; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.car.util.UiHelpers; import app.organicmaps.sdk.bookmarks.data.BookmarkCategory; @@ -31,7 +31,7 @@ public class BookmarksScreen extends BaseMapScreen private boolean mIsOnSortingScreen = false; - public BookmarksScreen(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer, + public BookmarksScreen(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer, @NonNull BookmarkCategory bookmarkCategory) { super(carContext, surfaceRenderer); diff --git a/android/app/src/main/java/app/organicmaps/car/screens/bookmarks/SortingScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/bookmarks/SortingScreen.java index 44eb459bc..560cbb179 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/bookmarks/SortingScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/bookmarks/SortingScreen.java @@ -16,7 +16,7 @@ import androidx.core.graphics.drawable.IconCompat; import androidx.lifecycle.LifecycleOwner; import app.organicmaps.MwmApplication; import app.organicmaps.R; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.car.util.UiHelpers; import app.organicmaps.sdk.bookmarks.data.BookmarkCategory; @@ -38,7 +38,7 @@ class SortingScreen extends BaseMapScreen private @BookmarkManager.SortingType int mNewSortingType; - public SortingScreen(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer, + public SortingScreen(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer, @NonNull BookmarkCategory bookmarkCategory) { super(carContext, surfaceRenderer); diff --git a/android/app/src/main/java/app/organicmaps/car/screens/search/SearchOnMapScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/search/SearchOnMapScreen.java index 481604af8..75b8dad41 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/search/SearchOnMapScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/search/SearchOnMapScreen.java @@ -17,7 +17,7 @@ import androidx.core.graphics.drawable.IconCompat; import androidx.lifecycle.LifecycleOwner; import app.organicmaps.MwmApplication; import app.organicmaps.R; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.car.util.UiHelpers; import app.organicmaps.sdk.bookmarks.data.MapObject; @@ -177,7 +177,7 @@ public class SearchOnMapScreen extends BaseMapScreen implements SearchListener @NonNull private final CarContext mCarContext; @NonNull - private final SurfaceRenderer mSurfaceRenderer; + private final Renderer mSurfaceRenderer; @NonNull private String mQuery = ""; @@ -185,7 +185,7 @@ public class SearchOnMapScreen extends BaseMapScreen implements SearchListener private String mLocale; private boolean mIsCategory; - public Builder(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer) + public Builder(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer) { mCarContext = carContext; mSurfaceRenderer = surfaceRenderer; diff --git a/android/app/src/main/java/app/organicmaps/car/screens/search/SearchScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/search/SearchScreen.java index 2b7661e03..ff24c5c21 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/search/SearchScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/search/SearchScreen.java @@ -16,7 +16,7 @@ import androidx.core.graphics.drawable.IconCompat; import androidx.lifecycle.LifecycleOwner; import app.organicmaps.MwmApplication; import app.organicmaps.R; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.sdk.bookmarks.data.MapObject; import app.organicmaps.sdk.search.SearchEngine; @@ -209,14 +209,14 @@ public class SearchScreen extends BaseMapScreen implements SearchTemplate.Search @NonNull private final CarContext mCarContext; @NonNull - private final SurfaceRenderer mSurfaceRenderer; + private final Renderer mSurfaceRenderer; @NonNull private String mQuery = ""; @NonNull private String mLocale; - public Builder(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer) + public Builder(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer) { mCarContext = carContext; mSurfaceRenderer = surfaceRenderer; diff --git a/android/app/src/main/java/app/organicmaps/car/screens/settings/DrivingOptionsScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/settings/DrivingOptionsScreen.java index 1567cc715..a191022b2 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/settings/DrivingOptionsScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/settings/DrivingOptionsScreen.java @@ -13,7 +13,7 @@ import androidx.car.app.model.Template; import androidx.car.app.navigation.model.MapWithContentTemplate; import androidx.lifecycle.LifecycleOwner; import app.organicmaps.R; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.car.util.Toggle; import app.organicmaps.car.util.UiHelpers; @@ -36,7 +36,7 @@ public class DrivingOptionsScreen extends BaseMapScreen @NonNull private final Map mInitialDrivingOptionsState = new HashMap<>(); - public DrivingOptionsScreen(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer) + public DrivingOptionsScreen(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer) { super(carContext, surfaceRenderer); diff --git a/android/app/src/main/java/app/organicmaps/car/screens/settings/HelpScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/settings/HelpScreen.java index e1b8430de..0e8881f7f 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/settings/HelpScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/settings/HelpScreen.java @@ -12,7 +12,7 @@ import androidx.car.app.model.Template; import androidx.car.app.navigation.model.MapWithContentTemplate; import app.organicmaps.BuildConfig; import app.organicmaps.R; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.car.util.UiHelpers; import app.organicmaps.sdk.Framework; @@ -20,7 +20,7 @@ import app.organicmaps.sdk.util.DateUtils; public class HelpScreen extends BaseMapScreen { - public HelpScreen(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer) + public HelpScreen(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer) { super(carContext, surfaceRenderer); } diff --git a/android/app/src/main/java/app/organicmaps/car/screens/settings/SettingsScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/settings/SettingsScreen.java index 1cb2ed8ef..4bf84241f 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/settings/SettingsScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/settings/SettingsScreen.java @@ -13,7 +13,7 @@ import androidx.car.app.model.Row; import androidx.car.app.model.Template; import androidx.car.app.navigation.model.MapWithContentTemplate; import app.organicmaps.R; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.car.util.ThemeUtils; import app.organicmaps.car.util.Toggle; @@ -33,7 +33,7 @@ public class SettingsScreen extends BaseMapScreen void set(boolean newValue); } - public SettingsScreen(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer) + public SettingsScreen(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer) { super(carContext, surfaceRenderer); } diff --git a/android/app/src/main/java/app/organicmaps/car/screens/settings/ThemeScreen.java b/android/app/src/main/java/app/organicmaps/car/screens/settings/ThemeScreen.java index 25e66e368..3a4055ee2 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/settings/ThemeScreen.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/settings/ThemeScreen.java @@ -12,7 +12,7 @@ import androidx.car.app.model.Template; import androidx.car.app.navigation.model.MapWithContentTemplate; import androidx.core.graphics.drawable.IconCompat; import app.organicmaps.R; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.car.util.ThemeUtils; import app.organicmaps.car.util.UiHelpers; @@ -24,7 +24,7 @@ public class ThemeScreen extends BaseMapScreen @NonNull private final CarIcon mRadioButtonSelectedIcon; - public ThemeScreen(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer) + public ThemeScreen(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer) { super(carContext, surfaceRenderer); mRadioButtonIcon = diff --git a/android/app/src/main/java/app/organicmaps/car/util/IntentUtils.java b/android/app/src/main/java/app/organicmaps/car/util/IntentUtils.java index ab37fbd72..e53da5233 100644 --- a/android/app/src/main/java/app/organicmaps/car/util/IntentUtils.java +++ b/android/app/src/main/java/app/organicmaps/car/util/IntentUtils.java @@ -12,7 +12,7 @@ import androidx.car.app.notification.CarPendingIntent; import app.organicmaps.MwmApplication; import app.organicmaps.api.Const; import app.organicmaps.car.CarAppService; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.NavigationScreen; import app.organicmaps.car.screens.search.SearchScreen; import app.organicmaps.sdk.Framework; @@ -30,7 +30,7 @@ public final class IntentUtils private static final int SEARCH_IN_VIEWPORT_ZOOM = 16; - public static void processIntent(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer, + public static void processIntent(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer, @NonNull Intent intent) { final String action = intent.getAction(); @@ -50,8 +50,8 @@ public final class IntentUtils } // https://developer.android.com/reference/androidx/car/app/CarContext#startCarApp(android.content.Intent) - private static void processNavigationIntent(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer, - @NonNull Intent intent) + private static void processNavigationIntent(@NonNull CarContext carContext, + @NonNull Renderer surfaceRenderer, @NonNull Intent intent) { // TODO (AndrewShkrob): This logic will need to be revised when we introduce support for adding stops during // navigation or route planning. Skip navigation intents during navigation diff --git a/android/app/src/main/java/app/organicmaps/car/util/UiHelpers.java b/android/app/src/main/java/app/organicmaps/car/util/UiHelpers.java index ada151fcb..a44bad85d 100644 --- a/android/app/src/main/java/app/organicmaps/car/util/UiHelpers.java +++ b/android/app/src/main/java/app/organicmaps/car/util/UiHelpers.java @@ -15,7 +15,7 @@ import androidx.car.app.navigation.model.MapController; import androidx.core.graphics.drawable.IconCompat; import app.organicmaps.MwmApplication; import app.organicmaps.R; -import app.organicmaps.car.SurfaceRenderer; +import app.organicmaps.car.renderer.Renderer; import app.organicmaps.car.screens.base.BaseMapScreen; import app.organicmaps.car.screens.settings.SettingsScreen; import app.organicmaps.sdk.Map; @@ -33,13 +33,14 @@ public final class UiHelpers { @NonNull public static ActionStrip createSettingsActionStrip(@NonNull BaseMapScreen mapScreen, - @NonNull SurfaceRenderer surfaceRenderer) + @NonNull Renderer surfaceRenderer) { return new ActionStrip.Builder().addAction(createSettingsAction(mapScreen, surfaceRenderer)).build(); } @NonNull - public static ActionStrip createMapActionStrip(@NonNull CarContext context, @NonNull SurfaceRenderer surfaceRenderer) + public static ActionStrip createMapActionStrip(@NonNull CarContext context, + @NonNull Renderer surfaceRenderer) { final CarIcon iconPlus = new CarIcon.Builder(IconCompat.createWithResource(context, R.drawable.ic_plus)).build(); final CarIcon iconMinus = new CarIcon.Builder(IconCompat.createWithResource(context, R.drawable.ic_minus)).build(); @@ -58,27 +59,30 @@ public final class UiHelpers } @NonNull - public static MapController createMapController(@NonNull CarContext context, @NonNull SurfaceRenderer surfaceRenderer) + public static MapController createMapController(@NonNull CarContext context, + @NonNull Renderer surfaceRenderer) { return new MapController.Builder().setMapActionStrip(createMapActionStrip(context, surfaceRenderer)).build(); } @NonNull - public static Action createSettingsAction(@NonNull BaseMapScreen mapScreen, @NonNull SurfaceRenderer surfaceRenderer) + public static Action createSettingsAction(@NonNull BaseMapScreen mapScreen, + @NonNull Renderer surfaceRenderer) { return createSettingsAction(mapScreen, surfaceRenderer, null); } @NonNull public static Action createSettingsActionForResult(@NonNull BaseMapScreen mapScreen, - @NonNull SurfaceRenderer surfaceRenderer, + @NonNull Renderer surfaceRenderer, @NonNull OnScreenResultListener onScreenResultListener) { return createSettingsAction(mapScreen, surfaceRenderer, onScreenResultListener); } @NonNull - private static Action createSettingsAction(@NonNull BaseMapScreen mapScreen, @NonNull SurfaceRenderer surfaceRenderer, + private static Action createSettingsAction(@NonNull BaseMapScreen mapScreen, + @NonNull Renderer surfaceRenderer, @Nullable OnScreenResultListener onScreenResultListener) { final CarContext context = mapScreen.getCarContext();