[android-auto] Refactor SurfaceRendered

Created base Renderer class
Rename SurfaceRenderer -> SurfaceRendererLegacy

Signed-off-by: Andrei Shkrob <github@shkrob.dev>
This commit is contained in:
Andrei Shkrob
2025-09-20 17:27:03 +02:00
committed by x7z4w
parent 1947a32007
commit 832273f928
21 changed files with 297 additions and 177 deletions

View File

@@ -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);

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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);
}
}

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;

View File

@@ -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;

View File

@@ -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<RoadType, Boolean> mInitialDrivingOptionsState = new HashMap<>();
public DrivingOptionsScreen(@NonNull CarContext carContext, @NonNull SurfaceRenderer surfaceRenderer)
public DrivingOptionsScreen(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer)
{
super(carContext, surfaceRenderer);

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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 =

View File

@@ -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

View File

@@ -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();