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