自動車用ハードウェア API

自動車向けアプリ API レベル 3 以降では、自動車向けアプリ ライブラリ API を使用して車両のプロパティとセンサーにアクセスできます。

要件

Android Auto で API を使用するには、まず、Android Auto モジュールの build.gradle ファイルに androidx.car.app:app-projected の依存関係を追加します。Android Automotive OS の場合は、Android Automotive OS モジュールの build.gradle ファイルに androidx.car.app:app-automotive への依存関係を追加します。

また、AndroidManifest.xml ファイルで、使用する車両データをリクエストするための関連する権限を宣言する必要があります。また、ユーザーがこれらの権限をデベロッパーに付与する必要があります。プラットフォームによって異なるフローを作成することなく、Android Auto と Android Automotive OS の両方で同じコードを使用できます。ただし、必要な権限は異なります。

CarInfo

次の表に、CarInfo API で提供されるプロパティと、それらを使用するためにリクエストする必要がある権限を示します。

メソッド プロパティ 権限:
Android Auto
権限:
AAOS
自動車向けアプリの API
fetchModel メーカー、モデル、年式 android.car.permission.CAR_INFO 3
fetchEnergyProfile EV コネクタの種類、燃料の種類 com.google.android.gms.permission.CAR_FUEL android.car.permission.CAR_INFO 3
fetchExteriorDimensions

API 30 以降を搭載した一部の AAOS 車両でのみ利用可能なデータ。

外寸 なし android.car.permission.CAR_INFO 7

addTollListener

removeTollListener

通行料金カードの状態、通行料金カードの種類 3

addEnergyLevelListener

removeEnergyLevelListener

バッテリー残量、燃料残量、燃料残量低下、走行可能距離 com.google.android.gms.permission.CAR_FUEL android.car.permission.CAR_ENERGY

android.car.permission.CAR_ENERGY_PORTS

android.car.permission.READ_CAR_DISPLAY_UNITS
3

addSpeedListener

removeSpeedListener

生速度、表示速度(車のクラスタ ディスプレイに表示される速度) com.google.android.gms.permission.CAR_SPEED android.car.permission.CAR_SPEED

android.car.permission.READ_CAR_DISPLAY_UNITS
3

addMileageListener

removeMileageListener

走行距離計の距離 com.google.android.gms.permission.CAR_MILEAGE Google Play からインストールされた Android Automotive OS アプリではデータを利用できません。 3

たとえば、残りの範囲を取得するには、CarInfo オブジェクトをインスタンス化してから、OnCarDataAvailableListener を作成して登録します。

val carInfo = carContext.getCarService(CarHardwareManager::class.java).carInfo

val listener = OnCarDataAvailableListener<EnergyLevel> { data ->
    if (data.rangeRemainingMeters.status == CarValue.STATUS_SUCCESS) {
        val rangeRemaining = data.rangeRemainingMeters.value
    } else {
        // Handle error
    }
}

carInfo.addEnergyLevelListener(carContext.mainExecutor, listener)
// ...
// Unregister the listener when you no longer need updates
carInfo.removeEnergyLevelListener(listener)

車のデータが常に利用可能であると想定しないでください。エラーが発生した場合は、リクエストした値のステータスを確認して、リクエストしたデータを取得できなかった理由を把握します。CarInfo クラス定義の詳細については、リファレンス ドキュメントをご覧ください。

CarSensors

CarSensors クラスを使用すると、車両の加速度計、ジャイロスコープ、コンパス、位置情報にアクセスできます。これらの値の利用可否は OEM によって異なる場合があります。加速度計、ジャイロスコープ、コンパスから取得されるデータの形式は、SensorManager API から取得される形式と同じです。

たとえば、車両の方角を確認するには:

val carSensors = carContext.getCarService(CarHardwareManager::class.java).carSensors

val listener = OnCarDataAvailableListener<Compass> { data ->
    if (data.orientations.status == CarValue.STATUS_SUCCESS) {
        val orientation = data.orientations.value
    } else {
        // Data not available, handle error
    }
}

carSensors.addCompassListener(CarSensors.UPDATE_RATE_NORMAL, carContext.mainExecutor, listener)
// ...
// Unregister the listener when you no longer need updates
carSensors.removeCompassListener(listener)

車から位置情報データにアクセスするには、android.permission.ACCESS_FINE_LOCATION 権限も宣言してリクエストする必要があります。

テスト

Android Auto でテストする際にセンサーデータをシミュレートするには、デスクトップ ヘッドユニット ガイドのセンサーセンサーの構成のセクションをご覧ください。Android Automotive OS でテストする際にセンサーデータをシミュレートするには、Android Automotive OS エミュレータ ガイドのハードウェアの状態をエミュレートするをご覧ください。