Android Automotive は、hardware/libhardware/include/hardware/vehicle.h
で定義された車両 HAL プロパティ VEHICLE_PROPERTY_HW_KEY_INPUT
に基づき、ステアリング リモート スイッチ、ハードウェア ボタン、タッチパネルなどの要素からのキー入力を処理します。
CAN バス ネットワークを介したキーイベントのディスパッチ例を次に示します。
図 1. CANBus フローを介した 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? */ } }