Zanim przejdziesz dalej, zapoznaj się ze wskazówkami dotyczącymi rozpraszania uwagi.
Na tej stronie opisujemy reguły dotyczące ograniczeń w zakresie wygody korzystania z samochodu, których możesz używać do tworzenia wiele konfiguracji reguł ograniczeń UX (np. Unia Europejska a Japonia), a następnie określając zestaw reguł, które mają być stosowane w czasie wykonywania. Więcej informacji: CarUxRestrictions.
Usługa ograniczeń UX samochodu umożliwia deweloperom zdefiniowanie nowych ograniczeń UX samochodu. konfiguracji. Czy deweloper chce zmienić reguły ograniczeń (np. w celu zapewnienia zgodności z lokalnymi standard bezpieczeństwa), deweloper może użyć interfejsu API do zdefiniowania nowej konfiguracji.
Interfejs API do ustawiania konfiguracji jest powtarzany tylko w nowej konfiguracji. Innymi słowy, konfiguracja nie zaczyna obowiązywać od razu. Zamiast tego nowa konfiguracja jest wczytywane po ponownym uruchomieniu usługi ograniczeń UX i gdy samochód znajdzie się w trybie zaparkowania. Usługa samochodowa sprawdź, czy samochód znajduje się w trybie parkowania przed ponownym załadowaniem nowej konfiguracji.
Oprócz nowej metody usługi Ograniczenia UX dostępne są interfejsy API do tworzenia konfiguracji. Stan wyboru biegu i prędkość są zmieniane na jeden z trzech stanów jazdy:
- Zaparkowany. Sprzęt w parku.
- Brak aktywności. Sprzęt nie znajduje się w parku, a prędkość wynosi zero.
- Przenoszenie. Sprzęt nie znajduje się w parku, a prędkość nie wynosi zero.
Aby dowiedzieć się, jak aplikacje wykorzystują stan jazdy samochodu i odpowiadające im ograniczenia UX, Więcej informacji: Korzystanie ze stanu jazdy samochodem i ograniczenia UX.
Konfiguracja ograniczeń na podstawie stanów dysku
Aby nie rozpraszać uwagi kierowcy, Android mapuje stan jazdy na zestaw ograniczeń dotyczących wygody użytkowania
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
- Zaparkowany. Bez ograniczeń.
- Brak aktywności. Brak obrazu i ekranu konfiguracji.
- Przenoszenie. Całkowicie ograniczony (wszystkie ograniczenia są wymagane).
Mapowanie pokazane powyżej jest wstępnie określone i skonfigurowane jako zasób XML.
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
a następnie zapisuje reguły w pamięci. Usługa mapuje obecny stan jazdy na ograniczenia UX
i transmituje aktualne ograniczenia na cały system.
<!-- No restrictions when car is parked --> <DrivingState car:state="parked"> <Restrictions car:requiresDistractionOptimization="false" car:uxr="baseline"/> </DrivingState> <!-- Restrictions when car is idling --> <DrivingState car:state="idling"> <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_video|no_config"/> </DrivingState> <!-- Restrictions for speed >= 0 m/s --> <DrivingState car:state="moving" car:minSpeed="0.0"> <Restrictions car:requiresDistractionOptimization="true" car:uxr="fully_restricted"/> </DrivingState>
Konfiguracje wielu wyświetlaczy
Domyślnie do dodatkowych wyświetlaczy nie są stosowane żadne ograniczenia. Aby utworzyć ograniczenie
dla wielu wyświetlaczy, umieść tag RestrictionMapping
z atrybutem
fizyczny port wyświetlacza. Do każdego z nich automatycznie stosowane są odpowiednie ograniczenia
wyświetlacz. W przykładzie poniżej ekrany z fizycznymi identyfikatorami portów 1 i 2 mają różne wartości.
konfiguracje:
<RestrictionMapping car:physicalPort="1"> <DrivingState car:state="moving"> <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_keyboard|no_video"/> </DrivingState> </RestrictionMapping> <RestrictionMapping car:physicalPort="2"> <DrivingState car:state="moving"> <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_video"/> </DrivingState> </RestrictionMapping>
Konfiguracje trybów ograniczeń
Możesz wybrać dowolną nazwę trybu, na przykład Nastolatek. W poniższym przykładzie dla trybu domyślnego i pasażera skonfigurowano różne ograniczenia. (wcześniej obsługiwany był tylko tryb pasażera):
<DrivingState car:state="idling"> <Restrictions car:mode="passenger" car:requiresDistractionOptimization="false" car:uxr="baseline"/> <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_video"/> </DrivingState> </Restrictions>Za pomocą interfejsu API możesz ustawić dowolną nazwę ciągu znaków dla tego trybu. Na przykład plik Metoda
setRestrictionMode(@NonNull String mode)
w CarUxRestrictionsManager.
(Wcześniej trzeba było używać atrybutu
Metoda setRestrictionMode(@CarUxRestrictionsManager.UxRestrictionMode int mode)
w
CarUxRestrictionsManager).
Interfejsy API CarUxRestrictionsConfiguration
Ograniczenia przy użyciu CarUxRestrictionsConfiguration
Nowa klasa CarUxRestrictionsConfiguration
jest zmapowana w stosunku 1:1 na bieżący kod XML.
schematu konfiguracji. CarUxRestrictionsConfiguration
można utworzyć za pomocą metody CarUxRestrictions.
, która weryfikuje konfigurację
podczas kompilacji().
new CarUxRestrictionsConfiguration.Builder() // Explicitly set restrictions for each driving state. .setUxRestrictions(CarDrivingStateEvent.DRIVING_STATE_PARKED, /* requiresOptimization= */ false, /* restrictions= */ UX_RESTRICTIONS_BASELINE) .setUxRestrictions(CarDrivingStateEvent.DRIVING_STATE_IDLING, true, UX_RESTRICTIONS_NO_VIDEO|UX_RESTRICTIONS_NO_SETUP) .setUxRestrictions(CarDrivingStateEvent.DRIVING_STATE_MOVING, true, UX_RESTRICTIONS_FULLY_RESTRICTED) // Set restriction parameters. .setMaxStringLength(int max) .setMaxCumulativeContentItems(int max) .setMaxContentDepth(int max) // Build a new CarUxRestrictionsConfiguration. .build();
Interfejs API CarUxRestrictionsManager
Ustaw CarUxRestrictionsConfiguration
na następny przejazd z: CarUxRestrictionsManager
. Ta metoda wymaga uprawnień,
Car.PERMISSION_CAR_UX_RESTRICTIONS_CONFIGURATION
public synchronized boolean saveUxRestrictionsConfigurationForNextBoot( CarUxRestrictionsConfiguration config);
Utrzymaj nową konfigurację ograniczeń UX
Po przekazaniu nowej konfiguracji usługa ograniczeń UX zwraca wartość logiczną wskazującą, czy nowa konfiguracja została zapisana. Ta nowa konfiguracja jest używana tylko wtedy, gdy zintegrowany moduł główny (IHU) uruchomi się ponownie, a samochód zostanie zaparkowany. Wewnętrznie – Ograniczenia UX usługa zawiera dwa zbiory konfiguracji:
- Produkcja. Konfiguracja ta jest opcjonalna, ale często jest dostępna. UX Usługa ograniczeń odczytuje tę konfigurację podczas uruchamiania.
- Rozłożony. Ta konfiguracja nie ma też wpływu na ograniczenia UX i jest promowany w wersji produkcyjnej po uruchomieniu usługi samochodowej i po zaparkowaniu samochodu.
Rysunek 1. Konfiguracja produkcyjna
Niepowodzenia adresu
Dopóki nie otrzymasz informacji o stanie jazdy z usługi CarpropertyManager (na przykład podczas podczas uruchamiania), ograniczenia UX nie będą egzekwowane. System działa tak, jakby stan jazdy Zaparkowany.
Jeśli odczyt zapisanej konfiguracji nie powiedzie się (na przykład w wyniku setNotFoundException), Usługa ograniczeń UX korzysta z zakodowanego na stałe trybu pełnego ograniczonego dostępu:
// Idling/moving state is fully restricted. private static CarUxRestrictionsConfiguration generateDefaultConfig() {}
Stan jazdy samochodem i ograniczenia dla użytkowników
Następujący schemat zawiera opis interakcji wyświetlanych na tym schemacie:
Rysunek 2. Zachęcanie do interakcji z stanami
Właściwości używane do ustalania stanu jazdy
Te 3 elementy VehiclePropertyIds
pozwalają uzyskać stan jazdy:
Interfejsy API dostępne dla aplikacji
Kod znajduje się w tych miejscach:
Kod | Lokalizacja |
---|---|
CarUxRestrictionsManager , Publiczne interfejsy API do rejestracji w celu wprowadzenia zmian ograniczeń UX. |
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
CarUxRestrictions , Definicja ograniczeń UX. |
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
CarDrivingStateManager
Systemowe interfejsy API do rejestracji na potrzeby zmian stanu jazdy. |
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
Aby symulować stany jazdy, zobacz Testowanie.