Ключевой ввод, Ключевой ввод

На основе свойства HAL транспортного средства VEHICLE_PROPERTY_HW_KEY_INPUT , определенного в hardware/libhardware/include/hardware/vehicle.h , Android Automotive обрабатывает ввод клавиш из элементов, включая дистанционные переключатели рулевого управления, аппаратные кнопки и сенсорные панели.

Например, отправка ключевого события по сети CAN-шины:

Ключевое событие

Рис. 1. Ключевые события Android Automotive в потоке CANbus.

Данные о ключевых событиях

К каждому ключевому событию в HAL транспортного средства прикрепляются следующие данные:

  • Действие ввода (вверх/вниз):
    VEHICLE_HW_KEY_INPUT_ACTION_DOWN = 0,
    VEHICLE_HW_KEY_INPUT_ACTION_UP = 1,
  • Код ключа, сопоставленный с ключами Android в партнерской реализации Vehicle HAL.
  • Целевой дисплей (главный/комбинация приборов):
    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? */ }
}