Bevor Sie fortfahren, lesen Sie sich die Richtlinien zur Ablenkung beim Fahren durch.
Auf dieser Seite werden die Car User Experience (UX)-Einschränkungsregeln beschrieben, mit denen Sie mehrere Regelkonfigurationen für UX-Einschränkungen erstellen können (z. B. Europäische Union im Vergleich zu Japan) und dann bestimmen können, welcher Regelsatz zur Laufzeit angewendet werden soll. Weitere Informationen finden Sie unter CarUxRestrictions .
Mit dem Dienst „Car UX Restrictions“ können Entwickler eine neue Car UX Restrictions-Konfiguration definieren. Sollte ein Entwickler die Beschränkungsregeln ändern wollen (z. B. um lokale Sicherheitsstandards einzuhalten), kann der Entwickler 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 UX Restrictions-Dienst neu gestartet wird und das Auto im Parkmodus ist. Der Autoservice stellt sicher, dass sich das Auto im Parkzustand befindet, bevor die neue Konfiguration neu geladen wird.
Zusätzlich zur neuen Dienstmethode „UX Restrictions“ werden APIs zum Erstellen der Konfiguration bereitgestellt. Der Zustand der Gangwahl und Geschwindigkeit wird in einen von drei Fahrzuständen umgewandelt:
- Geparkt. Ausrüstung im Park.
- Leerlauf. Gang nicht in Parkstellung und Geschwindigkeit ist Null.
- Ziehen um. Der Gang ist nicht im Parkmodus und die Geschwindigkeit ist nicht Null.
Informationen dazu, wie Apps den Fahrzustand eines Autos nutzen und welche UX-Einschränkungen es gibt, finden Sie unter „Nutzung des Fahrzustands eines Autos und UX-Einschränkungen“ .
Einschränkungskonfiguration basierend auf Laufwerkszuständen
Um eine Ablenkung des Fahrers zu verhindern, ordnet Android den Fahrzustand einer Reihe von UX-Einschränkungen zu
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
- Geparkt. Uneingeschränkt.
- Leerlauf. Kein Video und kein Konfigurationsbildschirm.
- Ziehen um. Vollständig eingeschränkt (alle Einschränkungen sind erforderlich).
Die oben dargestellte Zuordnung ist als XML-Ressource vorab festgelegt und konfiguriert. Der
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
speichert dann die Regeln im Speicher. Der Dienst ordnet dann den aktuellen Fahrstatus den UX-Einschränkungen zu und sendet 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 gelten keine Einschränkungen für zusätzliche Anzeigen. Um Einschränkungskonfigurationen für mehrere Anzeigen zu erstellen, fügen Sie das RestrictionMapping
Tag mit dem physischen Port für diese Anzeige ein. Die entsprechenden Einschränkungen werden automatisch auf jede Anzeige 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, beispielsweise „teen“ . Im folgenden Beispiel werden unterschiedliche Einschränkungen für den Standard- und den Passagiermodus konfiguriert (zuvor wurde nur der Passagiermodus 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>Sie können die API verwenden, um einen beliebigen Zeichenfolgennamen für den Modus festzulegen. Zum Beispiel die Methode
setRestrictionMode(@NonNull String mode)
in CarUxRestrictionsManager. (Früher haben Sie die Methode setRestrictionMode(@CarUxRestrictionsManager.UxRestrictionMode int mode)
in CarUxRestrictionsManager verwendet.)CarUxRestrictionsConfiguration-APIs
Einschränkungen mit CarUxRestrictionsConfiguration
Die neue Klasse CarUxRestrictionsConfiguration
wird 1:1 auf das aktuelle XML-Konfigurationsschema abgebildet. CarUxRestrictionsConfiguration
kann mit CarUxRestrictions. Builder
, der die Konfiguration bei 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);
Behalten Sie eine neue UX-Einschränkungskonfiguration bei
Wenn eine neue Konfiguration übergeben wird, gibt der UX Restrictions-Dienst einen booleschen Wert zurück, um anzugeben, ob die neue Konfiguration erfolgreich gespeichert wurde. Diese neue Konfiguration wird nur verwendet, wenn die Integrated Head Unit (IHU) neu startet und das Auto geparkt ist. Intern enthält der UX Restrictions-Dienst zwei Konfigurationssätze:
- Produktion. Obwohl diese Konfiguration optional ist, ist sie häufig vorhanden. Der UX Restrictions-Dienst liest diese Konfiguration beim Start.
- Inszeniert. Diese Konfiguration ist ebenfalls optional und hat keine Auswirkung auf UX-Einschränkungen. Sie wird in die Produktion hochgestuft, wenn der Autoservice startet und das Auto geparkt wird.
Abbildung 1. Produktionskonfiguration
Beheben Sie Fehler
Bis Fahrzustandsinformationen von CarPropertyManager empfangen werden (z. B. beim Hochfahren), werden UX-Einschränkungen nicht erzwungen. Das System verhält sich so, als ob der Fahrzustand „Parken“ wäre.
Sollte das Lesen einer gespeicherten Konfiguration fehlschlagen (z. B. SettingNotFoundException-Ergebnisse), greift der UX Restrictions-Dienst auf den hartcodierten, vollständig eingeschränkten Modus zurück:
// Idling/moving state is fully restricted. private static CarUxRestrictionsConfiguration generateDefaultConfig() {}
Fahrzustands- und Benutzerbeschränkungen
Der folgende Inhalt beschreibt die Interaktionen, die im folgenden Designdiagramm angezeigt werden:
Abbildung 2. Antriebszustandsinteraktionen
Eigenschaften, die zum Ableiten des Fahrzustands verwendet werden
Verwenden Sie die folgenden drei VehiclePropertyIds
, um den Fahrzustand abzuleiten:
Für Apps verfügbare APIs
Der Code befindet sich an den folgenden Orten:
Code | Standort |
---|---|
CarUxRestrictionsManager Öffentliche APIs zur Registrierung für UX-Einschränkungsänderungen. | /packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java |
CarUxRestrictions Definition der UX-Einschränkungen. | /packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java |
CarDrivingStateManager System-APIs zur Registrierung, um Zustandsänderungen voranzutreiben. | /packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java |
Informationen zum Simulieren von Fahrzuständen finden Sie unter Testen .
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2024-04-29 (UTC).