Lesen Sie vor dem Lesen dieser Seite die Richtlinien zur Ablenkung von Fahrern.
Auf dieser Seite werden die Regeln für Car User Experience (UX) Restrictions beschrieben, mit denen Sie mehrere Konfigurationen für UX Restrictions-Regeln erstellen können (z. B. für die Europäische Union und Japan). Außerdem wird erläutert, wie Sie zur Laufzeit festlegen, welcher Regelsatz angewendet werden soll. Weitere Informationen finden Sie unter CarUxRestrictions.
Mit dem Dienst „Car UX Restrictions“ können Entwickler eine neue Konfiguration für Car UX Restrictions definieren. Wenn ein Entwickler die Einschränkungsregeln ändern möchte (z. B. um lokale Sicherheitsstandards einzuhalten), kann er die API verwenden, um die neue Konfiguration zu definieren.
Die API zum Festlegen der Konfiguration bleibt nur in der neuen Konfiguration bestehen. Mit anderen Worten: die Konfiguration wird nicht sofort wirksam. Stattdessen wird die neue Konfiguration geladen, wenn der Dienst „UX Restrictions“ neu gestartet wird und das Auto geparkt ist. Der Autodienst prüft, ob das Auto geparkt ist, bevor die neue Konfiguration neu geladen wird.
Zusätzlich zur neuen Dienstmethode für UX Restrictions werden APIs zum Erstellen der Konfiguration bereitgestellt. Der Status der Gangauswahl und der Geschwindigkeit wird in einen von drei Fahrzuständen umgewandelt:
- Geparkt Gang ist auf „Parken“ gestellt.
- Leerlauf Gang ist nicht auf „Parken“ gestellt und Geschwindigkeit ist null.
- Fahrt Gang ist nicht auf „Parken“ gestellt und Geschwindigkeit ist nicht null.
Informationen dazu, wie Apps den Fahrzustand eines Autos und die entsprechenden UX Restrictions aufnehmen, finden Sie unter Fahrzustand und UX Restrictions nutzen.
Einschränkungskonfiguration basierend auf Fahrzuständen
Um die Ablenkung des Fahrers zu vermeiden, ordnet Android den Fahrzustand einer Reihe von UX Restrictions zu:
/packages/services/Car/+/android17-release/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
- Geparkt Uneingeschränkt.
- Leerlauf Kein Video und kein Konfigurationsbildschirm.
- Fahrt Vollständig eingeschränkt (alle Einschränkungen sind erforderlich).
Die oben dargestellte Zuordnung ist vordefiniert und als XML-Ressource konfiguriert. Die Datei
/packages/services/Car/+/android17-release/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
speichert die Regeln dann im Arbeitsspeicher. Der Dienst ordnet den aktuellen Fahrzustand UX Restrictions zu und überträgt die aktuellen Einschränkungen an das gesamte 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>Konfigurationen für mehrere Displays
Standardmäßig werden keine Einschränkungen auf zusätzliche Displays angewendet. Wenn Sie Einschränkungskonfigurationen für mehrere Displays erstellen möchten, fügen Sie das Tag RestrictionMapping mit dem physicalPort für dieses Display ein. Die entsprechenden Einschränkungen werden automatisch auf jedes Display angewendet. Im folgenden Beispiel haben die Displays mit den physischen Port-IDs 1 und 2 unterschiedliche Konfigurationen:
<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>Konfigurationen für Einschränkungsmodi
Sie können einen beliebigen Namen für den Modus auswählen, z. B. teen. Im folgenden Beispiel sind verschiedene Einschränkungen für die Modi default und passenger konfiguriert. Zuvor wurde nur der Modus passenger unterstützt:
<DrivingState car:state="idling">
<Restrictions car:mode="passenger" car:requiresDistractionOptimization="false" car:uxr="baseline"/>
<Restrictions car:requiresDistractionOptimization="true" car:uxr="no_video"/>
</DrivingState>
</Restrictions>setRestrictionMode(@NonNull String mode) in CarUxRestrictionsManager.
Zuvor wurde die Methode setRestrictionMode(@CarUxRestrictionsManager.UxRestrictionMode int mode) in CarUxRestrictionsManager verwendet.
CarUxRestrictionsConfiguration APIs
Einschränkungen mit CarUxRestrictionsConfiguration
Die neue Klasse CarUxRestrictionsConfiguration wird 1:1 dem aktuellen XML-Konfigurationsschema zugeordnet. CarUxRestrictionsConfiguration kann mit CarUxRestrictions. erstellt werden, das die Konfiguration
beim Erstellen mit build() validiert.
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();CarUxRestrictionsManager API
Legen Sie CarUxRestrictionsConfiguration für die nächste Fahrt mit CarUxRestrictionsManager fest. Für diese Methode ist die Berechtigung Car.PERMISSION_CAR_UX_RESTRICTIONS_CONFIGURATION erforderlich.
public synchronized boolean saveUxRestrictionsConfigurationForNextBoot(
CarUxRestrictionsConfiguration config);Neue UX Restrictions-Konfiguration beibehalten
Wenn eine neue Konfiguration übergeben wird, gibt der Dienst „UX Restrictions“ einen booleschen Wert zurück, der angibt, ob die neue Konfiguration erfolgreich gespeichert wurde. Diese neue Konfiguration wird nur verwendet, wenn die integrierte Head-Unit (Integrated Head Unit, IHU) neu gestartet wird und das Auto geparkt ist. Intern enthält der Dienst „UX Restrictions“ zwei Konfigurationssätze:
- Produktion Diese Konfiguration ist optional, aber oft vorhanden. Der Dienst „UX Restrictions“ liest diese Konfiguration beim Start.
- Staging Diese Konfiguration ist ebenfalls optional und hat keine Auswirkungen auf UX Restrictions . Sie wird in die Produktionskonfiguration hochgestuft, wenn der Autodienst gestartet wird und das Auto geparkt ist.

Abbildung 1 Konfiguration des Produktions-Tracks
Fehler beheben
Solange keine Informationen zum Fahrzustand von CarPropertyManager empfangen werden (z. B. während des Bootvorgangs), werden keine UX Restrictions erzwungen. Das System verhält sich so, als wäre der Fahrzustand „Geparkt“.
Wenn das Lesen einer gespeicherten Konfiguration fehlschlägt (z. B. aufgrund von SettingNotFoundException), greift der Dienst „UX Restrictions“ auf den fest codierten, vollständig eingeschränkten Modus zurück:
// Idling/moving state is fully restricted. private static CarUxRestrictionsConfiguration generateDefaultConfig() {}
Fahrzustand und Nutzereinschränkungen
Im folgenden Inhalt werden die Interaktionen beschrieben, die im folgenden Designdiagramm dargestellt sind:

Abbildung 2 Interaktionen des Fahrzustands
Attribute zum Ableiten des Fahrzustands
Verwenden Sie die folgenden drei VehiclePropertyIds, um den Fahrzustand abzuleiten:
Für Apps verfügbare APIs
Der Code befindet sich an den folgenden Speicherorten:
| Code | Speicherort |
|---|---|
CarUxRestrictionsManagerÖffentliche APIs zum Registrieren für Änderungen an UX Restrictions. |
/packages/services/Car/+/android17-release/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
CarUxRestrictionsDefinition von UX Restrictions. |
/packages/services/Car/+/android17-release/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
CarDrivingStateManager
System-APIs zum Registrieren für Änderungen am Fahrzustand. |
/packages/services/Car/+/android17-release/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
Informationen zum Simulieren von Fahrzuständen finden Sie unter Testen.