mapbox-navigation-android icon indicating copy to clipboard operation
mapbox-navigation-android copied to clipboard

NavigationView History APIs not available immediately

Open Guardiola31337 opened this issue 4 years ago • 9 comments

Integrating ReplayLocationEngine found:

  • Currently a client cannot interact with the History APIs when using NavigationView until NavigationView#startNavigation because MapboxNavigation from NavigationViewModel (NavigationView#retrieveMapboxNavigation) is only created afterwards in NavigationView#initialize - a client can enable it right after (that's what I did 😅) but at that point could be late (some events could be missing)

cc @abhishek1508

Guardiola31337 avatar Jun 03 '20 13:06 Guardiola31337

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] avatar Sep 02 '20 07:09 stale[bot]

This is still an issue.

Guardiola31337 avatar Sep 02 '20 13:09 Guardiola31337

This issue affects an even simpler case. I'm creating an app to navigate the user from the user's current location to a selected location. To find a route between these 2 locations, MapboxNavigation's requestRoutes method needs to be called before the startNavigation of NavigationView is called. However, the instance of the MapboxNavigation is instantiated during the startNavigation's call.

Also, I think the sample code shown in https://docs.mapbox.com/android/navigation/overview/#display-a-navigation-ui has the same issue. retrieveMapboxNavigation() is called before startNavigation(). (Well, the code itself works because this.mapboxNavigation is not read in this sample code.)

Hope this issue is prioritised to be resolved.

takeshi4126 avatar Oct 13 '20 05:10 takeshi4126

I forgot to mention that 1.1.0 of navigation ui is used in my environment.

    implementation "com.mapbox.navigation:ui:1.1.0"
    implementation 'com.mapbox.mapboxsdk:mapbox-sdk-geojson:5.5.0'
    implementation 'com.mapbox.mapboxsdk:mapbox-sdk-core:5.5.0'
    implementation 'com.mapbox.mapboxsdk:mapbox-sdk-services:5.5.0'

takeshi4126 avatar Oct 13 '20 05:10 takeshi4126

Hey @takeshi4126, MapboxNavigation#requestRoutes is not meant to be used together with the NavigationView. NavigationView accepts the route as a parameter in the NavigationViewOptions.Builder#directionsRoute and you can obtain the route before starting the navigation with MapboxDirections wrapper.

If this doesn't give you enough flexibility, you can use the standalone UI components instead, where you can freely interact with and manage the MapboxNavigation object as needed.

LukasPaczos avatar Oct 26 '20 09:10 LukasPaczos

Hi @LukasPaczos, thank you for giving me the instruction. Actually, I decided to use the standalone UI components and so far it meets my requirement.

One issue is that I have to call the MapboxNavigation.requestRoutes() even if I use setRoute() with a DirectionsRoute object obtained separately. Without calling the requireRoutes(), the RouteProgressObserver that I registered kept receiving INVALID_LOCATION status and the voice navigation didn't start. I guess calling requestRoutes() is required to put the MapboxNavigation into the "Active Guidance" state, and setRoute does not make it happen.

If I call requestRoute() after setRoutes() and startTripsSession(), then voice navigation starts. But calling requestRoute() to get the optimized route between 2 points is in my opinion unnecessary if the route is given by setRoutes(), and I appreciate if you have some ideas. Perhaps I'm using the API wrongly.

takeshi4126 avatar Oct 26 '20 11:10 takeshi4126

One issue is that I have to call the MapboxNavigation.requestRoutes() even if I use setRoute() with a DirectionsRoute object obtained separately. Without calling the requireRoutes(), the RouteProgressObserver that I registered kept receiving INVALID_LOCATION status and the voice navigation didn't start.

This is not working as design, and possibly or bug, or an incorrect setup. setRoutes should result in the same behavior as a successful requestRoutes. Would you be able to share more about how you're initializing the nav session or the route you're trying to set?

LukasPaczos avatar Oct 26 '20 13:10 LukasPaczos

@LukasPaczos Let me try to find a simple case to recreate it and open a new issue, as I'm not using NavigationView any longer and irrelevant to #3092.

takeshi4126 avatar Oct 27 '20 14:10 takeshi4126

Thanks for using the Mapbox Navigation SDK for Android and being a valued customer.

Mapbox will be soon deprecating any support for v0 and v1 versions of the SDK. To facilitate this transition we’re launching a new drop-in UI component into v2, equivalent to the existing NavigationView v1 in its design goals, however with a more modern and customizable API.

We plan to launch this new drop-in UI component as a Developer Preview feature in April, as part of the v2.5 series. Since you are using NavigationView with v1, we’d love to hear your feedback so that we can incorporate it ahead of a GA release.

If you’re interested in having early access to the upcoming drop-in UI for v2 and its documentation, drop a comment on this ticket or send an email to [email protected]

/cc @zugaldia @AhmerKhan1

abhishek1508 avatar Apr 01 '22 22:04 abhishek1508