Effective in 2026, to align with our trunk stable development model and ensure platform stability for the ecosystem, we will publish source code to AOSP in Q2 and Q4. For building and contributing to AOSP, we recommend utilizing android-latest-release instead of aosp-main. The android-latest-release manifest branch will always reference the most recent release pushed to AOSP. For more information, see Changes to AOSP.
Key input
Stay organized with collections
Save and categorize content based on your preferences.
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:

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:
public class MyClusterRenderingService extends
InstrumentClusterRenderingService {
...
@Override protected void onKeyEvent(KeyEvent keyEvent) { /* 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.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-12-02 UTC."],[],[]]