Od poziomu 3 interfejsu Car App API możesz używać interfejsów API biblioteki Car App Library, aby uzyskiwać dostęp do właściwości i czujników pojazdu.
Wymagania
Aby używać interfejsów API w Androidzie Auto, zacznij od dodania zależności od androidx.car.app:app-projected do pliku build.gradle modułu Androida Auto. W przypadku systemu operacyjnego Android Automotive dodaj zależność od androidx.car.app:app-automotive do pliku build.gradle modułu systemu operacyjnego Android Automotive.
Dodatkowo w pliku AndroidManifest.xml musisz zadeklarować odpowiednie
uprawnienia, aby móc prosić o dane samochodu, których chcesz używać. Użytkownik musi też
przyznać Ci te uprawnienia. Zamiast tworzyć przepływy zależne od platformy, możesz używać tego samego kodu w Androidzie
Auto i systemie operacyjnym Android Automotive.
Wymagane uprawnienia są jednak inne.
CarInfo
W tej tabeli opisano właściwości udostępniane w interfejsach API CarInfo oraz
uprawnienia, o które musisz poprosić, aby móc ich używać.
| Metody | Właściwości | Uprawnienia: Android Auto |
Uprawnienia: AAOS |
Car App API |
|---|---|---|---|---|
fetchModel |
Marka, model, rok | android.car.permission.CAR_INFO |
3 | |
fetchEnergyProfile |
Typy złączy EV, rodzaje paliwa | com.google.android.gms.permission.CAR_FUEL |
android.car.permission.CAR_INFO |
3 |
fetchExteriorDimensions
Dane dostępne tylko w niektórych pojazdach z systemem operacyjnym Android Automotive, które działają w interfejsie API w wersji 30 lub nowszej. |
Wymiary zewnętrzne | Nie dotyczy | android.car.permission.CAR_INFO |
7 |
| Stan karty płatności, typ karty płatności | 3 | |||
| Poziom baterii, poziom paliwa, niski poziom paliwa, pozostały zasięg | com.google.android.gms.permission.CAR_FUEL |
android.car.permission.CAR_ENERGYandroid.car.permission.CAR_ENERGY_PORTSandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| Surowa prędkość, prędkość wyświetlana (pokazywana na wyświetlaczu samochodu) | com.google.android.gms.permission.CAR_SPEED |
android.car.permission.CAR_SPEEDandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| Dystans na drogomierzu | com.google.android.gms.permission.CAR_MILEAGE |
Dane niedostępne dla aplikacji na system operacyjny Android Automotive zainstalowanych ze Sklepu Google Play. | 3 |
Aby na przykład uzyskać pozostały zasięg, utwórz instancję obiektu CarInfo, a następnie utwórz i zarejestruj 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)
Nie zakładaj, że dane samochodu są dostępne przez cały czas. Jeśli wystąpi błąd,
sprawdź stan żądanej wartości, aby lepiej zrozumieć, dlaczego
nie można było pobrać żądanych danych. Więcej informacji o definicji klasy CarInfo
znajdziesz w dokumentacji referencyjnej.
CarSensors
Klasa CarSensors umożliwia dostęp do danych z akcelerometru pojazdu,
żyroskopu, kompasu i lokalizacji. Dostępność tych wartości może zależeć od producenta. Format danych z akcelerometru, żyroskopu,
i kompasu jest taki sam jak w przypadku interfejsu SensorManager API.
Aby na przykład sprawdzić kierunek jazdy pojazdu:
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)
Aby uzyskać dostęp do danych o lokalizacji z samochodu, musisz też zadeklarować i poprosić o uprawnienie android.permission.ACCESS_FINE_LOCATION.
Test
Aby symulować dane z czujników podczas testowania w Androidzie Auto, zapoznaj się z sekcjami Czujniki i Konfiguracja czujników w przewodniku po jednostce głównej na komputerze. Aby symulować dane z czujników podczas testowania w systemie operacyjnym Android Automotive, zapoznaj się z przewodnikiem Emulowanie stanu sprzętu w emulatorze systemu operacyjnego Android Automotive.