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