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 |
| Status der Mautkarte, Art der Mautkarte | 3 | |||
| Akkustand, Kraftstoffstand, Kraftstoffstand niedrig, verbleibende Reichweite | com.google.android.gms.permission.CAR_FUEL |
android.car.permission.CAR_ENERGYandroid.car.permission.CAR_ENERGY_PORTSandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| Rohgeschwindigkeit, angezeigte Geschwindigkeit (auf dem Kombiinstrument des Autos) | com.google.android.gms.permission.CAR_SPEED |
android.car.permission.CAR_SPEEDandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| 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.