キー入力

hardware/libhardware/include/hardware/vehicle.hで定義されている Vehicle HAL プロパティVEHICLE_PROPERTY_HW_KEY_INPUTに基づいて、Android Automotive はステアリング リモート スイッチ、ハードウェア ボタン、タッチ パネルなどの要素からのキー入力を処理します。

たとえば、CAN バス ネットワーク経由でキー イベントをディスパッチすると、次のようになります。

主要なイベント

図 1. CANbus フロー上の Android Automotive の主要イベント。

主要なイベントデータ

次のデータは、Vehicle HAL の各キー イベントに添付されます。

  • 入力アクション (上/下):
    VEHICLE_HW_KEY_INPUT_ACTION_DOWN = 0,
    VEHICLE_HW_KEY_INPUT_ACTION_UP = 1,
    
  • Vehicle 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? */ }
}

hardware/libhardware/include/hardware/vehicle.hで定義されている Vehicle HAL プロパティVEHICLE_PROPERTY_HW_KEY_INPUTに基づいて、Android Automotive はステアリング リモート スイッチ、ハードウェア ボタン、タッチ パネルなどの要素からのキー入力を処理します。

たとえば、CAN バス ネットワーク経由でキー イベントをディスパッチすると、次のようになります。

主要なイベント

図 1. CANbus フロー上の Android Automotive の主要イベント。

主要なイベントデータ

次のデータは、Vehicle HAL の各キー イベントに添付されます。

  • 入力アクション (上/下):
    VEHICLE_HW_KEY_INPUT_ACTION_DOWN = 0,
    VEHICLE_HW_KEY_INPUT_ACTION_UP = 1,
    
  • Vehicle 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? */ }
}