自動車向けアプリ 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 |
| 通行料金カードの状態、通行料金カードの種類 | 3 | |||
| バッテリー残量、燃料残量、燃料残量低下、走行可能距離 | com.google.android.gms.permission.CAR_FUEL |
android.car.permission.CAR_ENERGYandroid.car.permission.CAR_ENERGY_PORTSandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| 生速度、表示速度(車のクラスタ ディスプレイに表示される速度) | com.google.android.gms.permission.CAR_SPEED |
android.car.permission.CAR_SPEEDandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| 走行距離計の距離 | 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 エミュレータ ガイドのハードウェアの状態をエミュレートするをご覧ください。