Skip to content

[Bug]: The Nav SDK's interactive traffic prompts aren't usable on the Auto screens #723

Description

@IvelinKrastev

Is there an existing issue for this?

  • I have searched the existing issues

Description of the bug

The Navigation SDK renders its own interactive prompts on the car map surface during guidance — traffic-incident confirmation cards (“Construction nearby … Still there / Not there”) and traffic/reroute prompts (“Slower than usual traffic … Dismiss”), enabled via GoogleMapsAutoViewController.setTrafficIncidentCardsEnabled(true) / setTrafficPromptsEnabled(true).

Image Image

On Android Auto these cards render but their buttons are completely non-interactive — tapping does nothing. The root cause is that AndroidAutoBaseScreen (the screen’s SurfaceCallback) implements only pan/zoom and never onClick, so taps are never delivered to the NavigationView that drew the buttons.

We are also raising the CarPlay side as a parallel question, since this is one cross-platform SDK: the CarPlay path is architecturally different (and we haven’t verified it yet), so we’d like the maintainers to confirm whether interactive prompts are tappable on CarPlay or are intentionally display-only. Details in the CarPlay section.

Flutter version

3.44.1

Package version

0.9.4

Native SDK versions

  • I haven't changed the version of the native SDKs

Flutter Doctor Output

flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.44.1, on macOS 26.5 25F71 darwin-arm64, locale en-BG)
[✓] Android toolchain - develop for Android devices (Android SDK version 36.1.0-rc1)
[✓] Xcode - develop for iOS and macOS (Xcode 26.5)
[✓] Chrome - develop for the web
[✓] Connected device (3 available)
[✓] Network resources

• No issues found!

Steps to reproduce

  1. Subclass AndroidAutoBaseScreen for the Android Auto screen (as the example shows).
  2. Start guidance and enable the prompts on the auto view:
    await autoViewController.setTrafficPromptsEnabled(true);
    await autoViewController.setTrafficIncidentCardsEnabled(true);
  3. Drive/simulate until the SDK shows an interactive prompt (incident card, or a prompt with Dismiss).
  4. Tap any button on the head unit (DHU or real car).

Expected vs Actual Behavior

Expected

Tapping triggers the SDK’s built-in action (submit incident confirmation / dismiss), as on the phone GoogleMapsNavigationView.

Actual

Nothing happens. The buttons are inert; the prompt only disappears on its own timeout.

Code Sample

Root cause

AndroidAutoBaseScreen implements androidx.car.app.SurfaceCallback but overrides only onScroll and onScale; it does not override SurfaceCallback.onClick(float x, float y) (or onFling).

android/src/main/kotlin/com/google/maps/flutter/navigation/AndroidAutoBaseScreen.kt:

override fun onScroll(distanceX: Float, distanceY: Float) {
  mGoogleMap?.moveCamera(CameraUpdateFactory.scrollBy(distanceX, distanceY))
}
override fun onScale(focusX: Float, focusY: Float, scaleFactor: Float) {
  val update = CameraUpdateFactory.zoomBy((scaleFactor - 1), Point(focusX.toInt(), focusY.toInt()))
  mGoogleMap?.animateCamera(update)
}
// no onClick(...) — taps are never handled

The NavigationView is hosted on a Presentation over a VirtualDisplay, so it does not receive the car’s touch directly — the only path for taps is SurfaceCallback.onClick, which the plugin must translate and dispatch into the view. Pan/zoom are bridged; taps are not, so the SDK’s own interactive prompt UI is unreachable.

Additional Context

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

triage meI really want to be triaged.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions