mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-20 13:23:59 +00:00
[android-auto] Fix display switching in navigation mode
Signed-off-by: Andrei Shkrob <github@shkrob.dev>
This commit is contained in:
@@ -17,6 +17,7 @@ import app.organicmaps.car.renderer.RendererFactory;
|
|||||||
import app.organicmaps.car.screens.ErrorScreen;
|
import app.organicmaps.car.screens.ErrorScreen;
|
||||||
import app.organicmaps.car.screens.MapPlaceholderScreen;
|
import app.organicmaps.car.screens.MapPlaceholderScreen;
|
||||||
import app.organicmaps.car.screens.MapScreen;
|
import app.organicmaps.car.screens.MapScreen;
|
||||||
|
import app.organicmaps.car.screens.NavigationScreen;
|
||||||
import app.organicmaps.car.screens.PlaceScreen;
|
import app.organicmaps.car.screens.PlaceScreen;
|
||||||
import app.organicmaps.car.screens.base.BaseMapScreen;
|
import app.organicmaps.car.screens.base.BaseMapScreen;
|
||||||
import app.organicmaps.car.screens.download.DownloadMapsScreen;
|
import app.organicmaps.car.screens.download.DownloadMapsScreen;
|
||||||
@@ -285,7 +286,19 @@ public final class CarAppSession extends Session implements DefaultLifecycleObse
|
|||||||
private void restoreRoute()
|
private void restoreRoute()
|
||||||
{
|
{
|
||||||
final RoutingController routingController = RoutingController.get();
|
final RoutingController routingController = RoutingController.get();
|
||||||
if (routingController.isPlanning() || routingController.isNavigating() || routingController.hasSavedRoute())
|
final boolean isNavigating = routingController.isNavigating();
|
||||||
|
final boolean hasNavigatingScreen = hasNavigationScreenInStack();
|
||||||
|
|
||||||
|
if (!isNavigating && hasNavigatingScreen)
|
||||||
|
mScreenManager.popToRoot();
|
||||||
|
|
||||||
|
if (isNavigating && routingController.getLastRouterType() == PlaceScreen.ROUTER && hasNavigatingScreen)
|
||||||
|
{
|
||||||
|
mScreenManager.popTo(NavigationScreen.MARKER);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (routingController.isPlanning() || isNavigating || routingController.hasSavedRoute())
|
||||||
{
|
{
|
||||||
final PlaceScreen placeScreen = new PlaceScreen.Builder(getCarContext(), mSurfaceRenderer)
|
final PlaceScreen placeScreen = new PlaceScreen.Builder(getCarContext(), mSurfaceRenderer)
|
||||||
.setMapObject(routingController.getEndPoint())
|
.setMapObject(routingController.getEndPoint())
|
||||||
@@ -294,4 +307,14 @@ public final class CarAppSession extends Session implements DefaultLifecycleObse
|
|||||||
mScreenManager.push(placeScreen);
|
mScreenManager.push(placeScreen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean hasNavigationScreenInStack()
|
||||||
|
{
|
||||||
|
for (final Screen screen : mScreenManager.getScreenStack())
|
||||||
|
{
|
||||||
|
if (NavigationScreen.MARKER.equals(screen.getMarker()))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -125,6 +125,8 @@ public class NavigationScreen extends BaseMapScreen implements RoutingController
|
|||||||
if (!mNavigationCancelled)
|
if (!mNavigationCancelled)
|
||||||
CarToast.makeText(getCarContext(), getCarContext().getString(R.string.trip_finished), CarToast.LENGTH_LONG)
|
CarToast.makeText(getCarContext(), getCarContext().getString(R.string.trip_finished), CarToast.LENGTH_LONG)
|
||||||
.show();
|
.show();
|
||||||
|
NavigationService.stopService(getCarContext());
|
||||||
|
ThemeUtils.update(getCarContext());
|
||||||
finish();
|
finish();
|
||||||
getScreenManager().popToRoot();
|
getScreenManager().popToRoot();
|
||||||
}
|
}
|
||||||
@@ -156,13 +158,11 @@ public class NavigationScreen extends BaseMapScreen implements RoutingController
|
|||||||
public void onDestroy(@NonNull LifecycleOwner owner)
|
public void onDestroy(@NonNull LifecycleOwner owner)
|
||||||
{
|
{
|
||||||
super.onDestroy(owner);
|
super.onDestroy(owner);
|
||||||
NavigationService.stopService(getCarContext());
|
|
||||||
MwmApplication.from(getCarContext()).getLocationHelper().removeListener(mLocationListener);
|
MwmApplication.from(getCarContext()).getLocationHelper().removeListener(mLocationListener);
|
||||||
|
|
||||||
if (mRoutingController.isNavigating())
|
if (mRoutingController.isNavigating())
|
||||||
mRoutingController.onSaveState();
|
mRoutingController.onSaveState();
|
||||||
mRoutingController.detach();
|
mRoutingController.detach();
|
||||||
ThemeUtils.update(getCarContext());
|
|
||||||
mNavigationManager.navigationEnded();
|
mNavigationManager.navigationEnded();
|
||||||
mNavigationManager.clearNavigationManagerCallback();
|
mNavigationManager.clearNavigationManagerCallback();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ import java.util.Objects;
|
|||||||
|
|
||||||
public class PlaceScreen extends BaseMapScreen implements OnBackPressedCallback.Callback, RoutingController.Container
|
public class PlaceScreen extends BaseMapScreen implements OnBackPressedCallback.Callback, RoutingController.Container
|
||||||
{
|
{
|
||||||
private static final Router ROUTER = Router.Vehicle;
|
public static final Router ROUTER = Router.Vehicle;
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private MapObject mMapObject;
|
private MapObject mMapObject;
|
||||||
|
|||||||
Reference in New Issue
Block a user