基于在hardware/libhardware/include/hardware/vehicle.h
中定义的车辆 HAL 属性VEHICLE_PROPERTY_HW_KEY_INPUT
,Android Automotive 处理来自转向远程开关、硬件按钮和触摸面板等元素的按键输入。
例如,通过 CAN 总线网络发送关键事件:
图 1. Android Automotive 通过 CANbus 流的关键事件。
关键事件数据
以下数据附加到 Vehicle HAL 中的每个关键事件:
- 输入操作(上/下):
VEHICLE_HW_KEY_INPUT_ACTION_DOWN = 0, VEHICLE_HW_KEY_INPUT_ACTION_UP = 1,
- 在车辆 HAL 的合作伙伴实现中映射到 Android 按键的按键代码。
- 目标显示器(主/仪表盘):
VEHICLE_DISPLAY_MAIN = 0, VEHICLE_DISPLAY_INSTRUMENT_CLUSTER = 1,
组合仪表中的按键输入处理使用CarInputService
(与车辆中的常规输入处理使用相同的服务)。关键事件传播到InstrumentClusterRenderingService
:
public class MyClusterRenderingService extends InstrumentClusterRenderingService { ... @Override protected void onKeyEvent(KeyEvent keyEvent) { /* Inject to Presentation? */ } }