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 der Datei AndroidManifest.xml die relevanten Berechtigungen deklarieren, um die gewünschten Fahrzeugdaten anzufordern. Der Nutzer muss Ihnen diese Berechtigungen auch erteilen. 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 Attribute beschrieben, die in den CarInfo APIs bereitgestellt werden, sowie die Berechtigungen, die Sie anfordern müssen, um sie zu verwenden.
| 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 |
Wenn Sie beispielsweise den verbleibenden Bereich abrufen möchten, instanziieren Sie ein CarInfo-Objekt und erstellen und registrieren Sie dann ein 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)
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 für die Daten vom Beschleunigungsmesser, Gyroskop und Kompass ist dasselbe wie bei der SensorManager API.
So prüfen Sie beispielsweise die Fahrtrichtung des Fahrzeugs:
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)
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 und Sensor configuration 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.