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

На основе свойства Vehicle 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? */ }
}