按键输入

Android Automotive 根据 hardware/libhardware/include/hardware/vehicle.h 中定义的车载 HAL 属性 VEHICLE_PROPERTY_HW_KEY_INPUT 处理来自转向远程开关、硬件按钮和触摸面板等元素的按键输入。

例如,通过 CAN 总线网络调度按键事件:

按键事件

图 1. 通过 CAN 总线调度 Android Automotive 按键事件的流程。

按键事件数据

车载 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? */ }
}