Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Konfiguracje usługi
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Każda obsługiwana właściwość jest określana przez konfigurację właściwości zdefiniowaną za pomocą struktury VehiclePropConfig
i ma te pola:
Pole |
Opis |
---|
prop |
Identyfikator usługi. Musi to być jedna ze zdefiniowanych właściwości systemowych z VehicleProperty.aidl lub właściwość dostawcy. Identyfikator usługi jest tworzony za pomocą operacji bitowej OR na tych polach (od prawej do lewej):
- (0x00000000) 16 bitów: unikalny identyfikator z zakresu 0x0100–0xffff.
- (0x00000000) 8 bitów: typy właściwości, które określają typ właściwości.
- (0x00000000) 4 bity: typy obszarów.
- (0x00000000) 4 bity:
VehiclePropertyGroup może to być SYSTEM
(0x10000000) lub VENDOR (0x20000000). W sekcji Właściwości dostawcy znajdziesz właściwości, które możesz dostosować.
Na przykład:
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)
|
access |
- Tryb dostępu do usługi. Musi to być jedna z tych wartości:
READ , WRITE lub READ_WRITE .
- W przypadku właściwości systemowych musi to być jeden ze zdefiniowanych trybów dostępu opisanych w
VehicleProperty.aidl .
- W przypadku usług, które mają dostęp na poziomie obszaru, jest to maksymalny podzbiór dostępu na poziomie obszaru. Jeśli np. usługi mają 2 obszary, do których dostęp jest określony jako
READ i READ_WRITE , należy ustawić wartość READ .
|
changeMode |
- Zmień tryb usługi. Musi to być jedna z tych wartości:
STATIC , ON_CHANGE lub CONTINUOUS . STATIC oznacza, że wartość właściwości nigdy się nie zmienia po uruchomieniu systemu. ON_CHANGE oznacza, że VHAL musi raportować, gdy wartość się zmieni. CONTINUOUS oznacza, że wartość właściwości zmienia się w sposób ciągły, a VHAL musi raportować na podstawie częstotliwości próbkowania subskrypcji.
- W przypadku właściwości systemowych musi to być tryb zmiany opisany w
VehicleProperty.aidl .
|
configArray |
Opcjonalna tablica zawierająca konfigurację konkretnej usługi. Może być puste. W przypadku niektórych właściwości systemowych, np. GEAR_SELECTION , tablica config ma specjalne znaczenie i musi być określona.
|
configString |
Opcjonalny ciąg tekstowy zawierający konfigurację specyficzną dla usługi. Może być puste. |
minSampleRate i maxSampleRate |
Minimalna i maksymalna obsługiwana częstotliwość próbkowania dla właściwości ciągłej (w hercach). Nie jest używana, jeśli właściwość nie jest ciągła. Wymagania minSampleRate i maxSampleRate muszą być możliwe do spełnienia przez implementację VHAL. Nie wszystkie częstotliwości próbkowania między wartością minimalną a maksymalną muszą być obsługiwane. |
Typy usług
Zdefiniowane jako wyliczenia w VehiclePropertyType.aidl
. Obsługiwane typy właściwości zostały wymienione w tej tabeli.
Typ usługi |
Wartość |
Opis |
---|
STRING |
0x00100000 |
Właściwość tekstowa, która korzysta z pola stringValue w wartości właściwości pojazdu. |
BOOLEAN |
0x00200000 |
Boolean korzysta z pierwszego elementu w polu int32Values w wartości właściwości pojazdu.
0 oznacza false , a None 0 oznacza true . |
INT32 |
0x00400000 |
Integer korzysta z pierwszego elementu w polu int32Values w wartości właściwości pojazdu. |
INT32_VEC |
0x00410000 |
Integer[] korzysta z elementów w polu int32Values w Wartość właściwości pojazdu. |
INT64 |
0x00500000 |
Długa właściwość, która korzysta z pierwszego elementu w polu int64Values w wartości właściwości pojazdu. |
INT64_VEC |
0x00510000 |
Long[] korzysta z elementów w polu int64Values w Wartość właściwości pojazdu. |
FLOAT |
0x00600000 |
Float korzysta z pierwszego elementu w polu floatValues w wartości właściwości pojazdu. |
FLOAT_VEC |
0x00610000 |
Float[] korzysta z elementów w polu floatValues w Wartość właściwości pojazdu. |
BYTES |
0x00700000 |
byte[] korzysta z elementów w polu byteValues w Wartość właściwości pojazdu. |
MIXED |
0x00e00000 |
Właściwość mieszanego typu. Dowolna kombinacja typów skalarnych lub wektorowych. Dokładny format musi być podany w tablicy konfiguracji w konfiguracji usługi.
W przypadku usług dostawcy typu MIXED element configArray musi mieć następującą strukturę:
configArray[0] , 1 oznacza, że usługa ma wartość String
configArray[1] , 1 oznacza, że usługa ma wartość Boolean
configArray[2] , 1 oznacza, że usługa ma wartość Integer
configArray[3] , liczba oznacza rozmiar Integer[] w usłudze
configArray[4] , 1 oznacza, że usługa ma wartość Long
configArray[5] , liczba oznacza rozmiar Long[] w usłudze
configArray[6] , 1 oznacza, że usługa ma wartość Float
configArray[7] , liczba oznacza rozmiar Float[] w usłudze
configArray[8] – liczba wskazuje rozmiar byte[] w usłudze.
Na przykład configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} oznacza, że właściwość ma wartość String , wartość Boolean , wartość Integer i tablicę z 3 liczbami całkowitymi.
|
Konfiguracja identyfikatora obszaru
Każda konfiguracja usługi może też zawierać listę konfiguracji identyfikatorów obszarów. Ta lista jest opcjonalna w przypadku usług globalnych i wymagana w przypadku usług strefowych (usług z wieloma obsługiwanymi obszarami). Każda konfiguracja identyfikatora obszaru ma te pola:
Pole |
Opis |
---|
areaId |
Identyfikator tego obszaru. Zobacz Identyfikatory obszarów. |
minInt32Value i maxInt32Value |
- Opcjonalna wartość minimalna i maksymalna dla właściwości typu INT32 w czasie uruchamiania. W przypadku wszystkich innych typów musi wynosić 0. Ignorowane, jeśli obie wartości wynoszą 0.
- W przypadku usługi globalnej, jeśli trzeba zdefiniować wartość minimalną i maksymalną, należy użyć jednej konfiguracji obszaru z identyfikatorem obszaru 0.
- Ta wartość jest statyczna i nie zmieni się nawet wtedy, gdy w czasie działania programu zmieni się wartość minimalna lub maksymalna. Wdróż
IVehicle#getMinMaxSupportedValue dla dynamicznej wartości minimalnej lub maksymalnej.
|
minInt64Value i maxInt64Value |
- Opcjonalna wartość minimalna i maksymalna dla właściwości typu INT64 w czasie uruchamiania. W przypadku wszystkich innych typów musi wynosić 0. Ignorowane, jeśli obie wartości wynoszą 0.
- W przypadku usługi globalnej, jeśli trzeba zdefiniować wartość minimalną i maksymalną, należy użyć jednej konfiguracji obszaru z identyfikatorem obszaru 0.
- Ta wartość jest statyczna i nie zmieni się nawet wtedy, gdy w czasie działania programu zmieni się wartość minimalna lub maksymalna. Wdróż
IVehicle#getMinMaxSupportedValue dla dynamicznej wartości minimalnej lub maksymalnej.
|
minFloatValue i maxFloatValue |
- Opcjonalna wartość minimalna i maksymalna dla właściwości typu Float w czasie rozruchu. W przypadku wszystkich innych typów musi wynosić 0. Ignorowane, jeśli obie wartości wynoszą 0,0.
- W przypadku usługi globalnej, jeśli trzeba zdefiniować wartość minimalną i maksymalną, należy użyć jednej konfiguracji obszaru z identyfikatorem obszaru 0.
- Ta wartość jest statyczna i nie zmieni się nawet wtedy, gdy w czasie działania programu zmieni się wartość minimalna lub maksymalna. Wdróż
IVehicle#getMinMaxSupportedValue dla dynamicznej wartości minimalnej lub maksymalnej.
|
(Nowość w Androidzie 14)
supportedEnumValues |
- Opcjonalna lista obsługiwanych wartości w momencie uruchomienia, jeśli właściwość jest zdefiniowana jako właściwość typu wyliczeniowego. Jeśli nie jest określona (pusta) lub przed Androidem 14, zakłada się, że wszystkie wartości wyliczeniowe są obsługiwane.
- W przypadku usługi globalnej, jeśli trzeba zdefiniować obsługiwane wartości wyliczeniowe, należy użyć jednej konfiguracji obszaru z identyfikatorem obszaru 0.
- Ta wartość jest statyczna i nie zmieni się, nawet jeśli obsługiwane wartości ulegną zmianie w czasie działania programu. W przypadku dynamicznie obsługiwanych wartości zaimplementuj
IVehicle#getSupportedValuesLists .
- Dotyczy to tylko właściwości typu wyliczeniowego. W przypadku innych typów to pole musi być puste.
Aby udostępnić obsługiwane wartości dla innych typów niebędących wyliczeniami, użyj
IVehicle#getSupportedValuesLists .
|
(Nowość w Androidzie 15)
supportVariableUpdateRate |
- Czy obsługiwana jest zmienna częstotliwość aktualizacji. Dotyczy to tylko usług ciągłych.
- Jeśli ta wartość to
true , aplikacja może włączyć zmienną częstotliwość aktualizacji subskrypcji, aby otrzymywać zdarzenia aktualizacji właściwości tylko wtedy, gdy zmieni się wartość właściwości (czyli traktować właściwości ciągłe jako właściwości zmieniające się).
- Jeśli wszyscy subskrybenci usługi włączą zmienną częstotliwość aktualizacji, żądanie subskrypcji do VHAL włączy zmienną częstotliwość aktualizacji usługi, a VHAL musi wysyłać zdarzenia aktualizacji usługi tylko wtedy, gdy zmieni się wartość usługi.
- Jeśli którykolwiek z subskrybentów zażąda stałej częstotliwości aktualizacji, żądanie subskrypcji do VHAL wyłączy zmienną częstotliwość aktualizacji właściwości, a AAOS odfiltruje zduplikowane zdarzenia dla klientów, którzy zażądali zmiennej częstotliwości aktualizacji.
- ZALECAMY obsługę zmiennej częstotliwości aktualizacji wszystkich właściwości ciągłych innych niż sygnał rytmu serca, aby zwiększyć wydajność, chyba że dane właściwości są duże (np. tablica bajtów o rozmiarze 1 KB) i mogą zajmować dużą ilość pamięci na potrzeby buforowania.
|
(Nowość w Androidzie 16)
hasSupportedValueInfo |
- Jeśli nie jest to
null , pokazuje, czy ta właściwość określa minimalne lub maksymalne obsługiwane wartości lub listę obsługiwanych wartości.
- To pole określa, czy dynamiczne interfejsy API obsługiwanych wartości:
getMinMaxSupportedValue , getSupportedValuesLists ,subscribeSupportedValueChange , unsubscribeSupportedValueChange są obsługiwane w przypadku tego identyfikatora usługi i identyfikatora obszaru.
- Jeśli nie
null , VHAL musi zaimplementować te interfejsy API dla tego identyfikatora usługi i identyfikatora obszaru.
- Jeśli
null lub na urządzeniu z Androidem 15 lub starszym, dynamiczne obsługiwane wartości tego identyfikatora właściwości i identyfikatora obszaru nie są obsługiwane. Klient musi używać statycznych informacji o obsługiwanych wartościach podanych w konfiguracji właściwości pojazdu.
|
Typy obszarów
Zdefiniowane jako wyliczenia w VehicleArea.aidl
. Obsługiwane typy obszarów znajdziesz poniżej.
Typ obszaru |
Wartość |
Opis |
---|
Cały świat |
0x01000000 |
Ta usługa jest usługą globalną i nie ma wielu obszarów. |
OKNO |
0x03000000 |
Obszar na podstawie okien, korzysta z wyliczenia VehicleAreaWindow . |
MIRROR |
0x04000000 |
Obszar na podstawie luster, korzysta z wyliczenia VehicleAreaMirror . |
SEAT |
0x05000000 |
Obszar na podstawie miejsc, używa wyliczenia VehicleAreaSeat . |
DOOR |
0x06000000 |
Obszar na podstawie drzwi, korzysta z wyliczenia VehicleAreaDoor . |
KOŁO |
0x07000000 |
Obszar na podstawie kół, korzysta z VehicleAreaWheel enum. |
Każda właściwość podzielona na strefy musi korzystać ze wstępnie zdefiniowanego typu obszaru. Każdy typ obszaru ma zestaw flag bitowych zdefiniowanych w wyliczeniu dla danego typu obszaru. Na przykład obszar SEAT definiuje wyliczenia VehicleAreaSeat
:
ROW_1_LEFT = 0x0001
ROW_1_CENTER = 0x0002
ROW_1_RIGHT = 0x0004
ROW_2_LEFT = 0x0010
ROW_2_CENTER = 0x0020
ROW_2_RIGHT = 0x0040
ROW_3_LEFT = 0x0100
...
Identyfikatory obszarów
W przypadku nieruchomości podzielonych na strefy stosuje się identyfikatory obszarów. Każda nieruchomość podzielona na strefy może obsługiwać co najmniej 1 identyfikator obszaru. Identyfikator obszaru składa się z co najmniej 1 flagi z odpowiedniego wyliczenia. Na przykład usługa korzystająca z VehicleAreaSeat
może używać tych identyfikatorów obszaru:
Produkt |
Opis |
---|
ROW_1_LEFT | ROW_1_RIGHT |
Identyfikator obszaru dotyczy obu przednich foteli. |
ROW_2_LEFT |
Dotyczy tylko lewego tylnego siedzenia. |
ROW_2_RIGHT |
Dotyczy tylko prawego tylnego siedzenia. |
Więcej informacji znajdziesz w sekcji HVAC.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-10-10 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-10-10 UTC."],[],[]]