Starting March 27, 2025, we recommend using android-latest-release instead of aosp-main to build and contribute to AOSP. For more information, see Changes to AOSP.

Key input

Based on the Vehicle HAL property VEHICLE_PROPERTY_HW_KEY_INPUT, defined in hardware/libhardware/include/hardware/vehicle.h, Android Automotive handles key input from elements that include steering remote switches, hardware buttons, and touch panels.

For example, dispatch of a key event over a CAN bus network:

Key event

Figure 1. Android Automotive key events over CANbus flow.

Key event data

The following data is attached to each key event in the Vehicle HAL:

  • Input action (up/down):
    VEHICLE_HW_KEY_INPUT_ACTION_DOWN = 0,
    VEHICLE_HW_KEY_INPUT_ACTION_UP = 1,
  • Key code mapped to Android keys in a partner implementation of the Vehicle HAL.
  • Target display (main/instrument cluster):
    VEHICLE_DISPLAY_MAIN = 0,
    VEHICLE_DISPLAY_INSTRUMENT_CLUSTER = 1,

The key input handling in the instrument cluster uses CarInputService (the same service uses for the regular input handling in the vehicle). Key events get propagated to the InstrumentClusterRenderingService:

publicclassMyClusterRenderingServiceextends
InstrumentClusterRenderingService{
...
@OverrideprotectedvoidonKeyEvent(KeyEventkeyEvent){/* Inject to
 Presentation? */}
}

Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Last updated 2025年12月02日 UTC.