APIs für Auto-Hardware

Ab Car App API-Level 3 können Sie über die Car App Library-APIs auf Fahrzeugeigenschaften und Sensoren zugreifen.

Voraussetzungen

Wenn Sie die APIs mit Android Auto verwenden möchten, fügen Sie zuerst eine Abhängigkeit von androidx.car.app:app-projected zur Datei build.gradle für Ihr Android Auto-Modul hinzu. Fügen Sie für Android Automotive OS der Datei build.gradle für Ihr Android Automotive OS-Modul eine Abhängigkeit von androidx.car.app:app-automotive hinzu.

Außerdem müssen Sie in Ihrer AndroidManifest.xml-Datei die relevanten Berechtigungen deklarieren, die zum Anfordern der Fahrzeugdaten erforderlich sind, die Sie verwenden möchten. Diese Berechtigungen müssen Ihnen auch vom Nutzer gewährt werden. Sie können denselben Code für Android Auto und Android Automotive OS verwenden, anstatt plattformabhängige Abläufe zu erstellen. Die erforderlichen Berechtigungen sind jedoch unterschiedlich.

CarInfo

In dieser Tabelle werden die in den CarInfo-APIs bereitgestellten Attribute und die Berechtigungen beschrieben, die Sie zum Verwenden der Attribute anfordern müssen.

Methoden Properties Berechtigungen:
Android Auto
Berechtigungen:
AAOS
Car App API
fetchModel Marke, Modell, Baujahr android.car.permission.CAR_INFO 3
fetchEnergyProfile Ladesteckertypen für Elektrofahrzeuge, Kraftstofftypen com.google.android.gms.permission.CAR_FUEL android.car.permission.CAR_INFO 3
fetchExteriorDimensions

Daten sind nur für einige AAOS-Fahrzeuge mit API 30 oder höher verfügbar.

Außenabmessungen android.car.permission.CAR_INFO 7

addTollListener

removeTollListener

Status der Mautkarte, Art der Mautkarte 3

addEnergyLevelListener

removeEnergyLevelListener

Akkustand, Kraftstoffstand, Kraftstoffstand niedrig, verbleibende Reichweite 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

Rohgeschwindigkeit, angezeigte Geschwindigkeit (auf dem Kombiinstrument des Autos) com.google.android.gms.permission.CAR_SPEED android.car.permission.CAR_SPEED

android.car.permission.READ_CAR_DISPLAY_UNITS
3

addMileageListener

removeMileageListener

Kilometerzähler com.google.android.gms.permission.CAR_MILEAGE Daten sind für Android Automotive OS-Apps, die über Google Play installiert wurden, nicht verfügbar. 3

Um beispielsweise den verbleibenden Bereich abzurufen, instanziieren Sie ein CarInfo-Objekt und erstellen und registrieren Sie dann ein OnCarDataAvailableListener:

Kotlin

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)

Java

CarInfo carInfo = getCarContext().getCarService(CarHardwareManager.class).getCarInfo();

OnCarDataAvailableListener<EnergyLevel> listener = (data) -> {
  if(data.getRangeRemainingMeters().getStatus() == CarValue.STATUS_SUCCESS) {
    float rangeRemaining = data.getRangeRemainingMeters().getValue();
  } else {
    // Handle error
  }
};

carInfo.addEnergyLevelListener(getCarContext().getMainExecutor(), listener);

// Unregister the listener when you no longer need updates
carInfo.removeEnergyLevelListener(listener);

Gehen Sie nicht davon aus, dass die Daten des Autos jederzeit verfügbar sind. Wenn Sie eine Fehlermeldung erhalten, prüfen Sie den Status des angeforderten Werts, um besser zu verstehen, warum die angeforderten Daten nicht abgerufen werden konnten. Weitere Informationen zur CarInfo-Klassendefinition finden Sie in der Referenzdokumentation.

CarSensors

Über die Klasse CarSensors haben Sie Zugriff auf die Daten des Beschleunigungsmessers, des Gyroskops, des Kompasses und des Standorts des Fahrzeugs. Die Verfügbarkeit dieser Werte kann vom OEM abhängen. Das Format der Daten vom Beschleunigungsmesser, Gyroskop und Kompass ist dasselbe wie bei der SensorManager API.

So prüfen Sie beispielsweise die Fahrtrichtung des Fahrzeugs:

Kotlin

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)

Java

CarSensors carSensors = getCarContext().getCarService(CarHardwareManager.class).getCarSensors();

OnCarDataAvailableListener<Compass> listener = (data) -> {
  if (data.getOrientations().getStatus() == CarValue.STATUS_SUCCESS) {
    List<Float> orientations = data.getOrientations().getValue();
  } else {
    // Data not available, handle error
  }
};

carSensors.addCompassListener(CarSensors.UPDATE_RATE_NORMAL, getCarContext().getMainExecutor(),
    listener);

// Unregister the listener when you no longer need updates
carSensors.removeCompassListener(listener);

Wenn Sie auf Standortdaten des Autos zugreifen möchten, müssen Sie auch die Berechtigung android.permission.ACCESS_FINE_LOCATION deklarieren und anfordern.

Test

Informationen zum Simulieren von Sensordaten beim Testen auf Android Auto finden Sie in den Abschnitten Sensors (Sensoren) und Sensor configuration (Sensorkonfiguration) im Leitfaden zum Desktop-Infotainmentsystem. Informationen zum Simulieren von Sensordaten beim Testen unter Android Automotive OS finden Sie im Leitfaden zum Android Automotive OS-Emulator unter Hardwarestatus emulieren.