Lesen Sie sich die Richtlinien zum Ablenken beim Fahren durch, bevor Sie fortfahren.
Auf dieser Seite werden die Regeln zur Einschränkung der Auto-Nutzererfahrung beschrieben, mit denen Sie mehrere Konfigurationen für UX-Einschränkungen (z. B. Europäische Union oder Japan) haben und dann festlegen, welche Regeln zur Laufzeit angewendet werden sollen. Weitere Informationen finden Sie unter CarUxEinschränkungen.
Mit dem Service „Car UX Restrictions“ können Entwickler neue UX-Einschränkungen für Autos definieren Konfiguration. Sollte ein Entwickler die Einschränkungsregeln ändern wollen (z. B. um lokale Sicherheitsstandards), kann der Entwickler mithilfe der API die neue Konfiguration 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 werden geladen, wenn der Dienst für UX-Einschränkungen neu gestartet wird und das Auto sich im Parkmodus befindet. Der Fahrdienst stellt sicher, dass sich das Auto im Parkmodus befindet, bevor die neue Konfiguration neu geladen wird.
Zusätzlich zur neuen Methode für den UX-Einschränkungsservice werden APIs bereitgestellt, um die Konfiguration. Der Status der Gangauswahl und -geschwindigkeit wird in einen von drei Fahrzuständen umgewandelt:
- Geparkt. Ausrüstung im Park.
- Inaktiv. Das Zahnrad ist nicht im Park und die Geschwindigkeit ist gleich null.
- Verschieben. Ausrüstung steht nicht im Park und Geschwindigkeit ist nicht null.
Um zu erfahren, wie Apps den Fahrstatus eines Autos und die entsprechenden UX-Einschränkungen verbrauchen, Siehe Verbrauchszustand von Fahrzeugen und UX-Einschränkungen.
Einschränkungskonfiguration basierend auf Laufwerksstatus konfigurieren
Damit Fahrer nicht abgelenkt werden, ordnet Android den Fahrstatus bestimmten UX-Einschränkungen zu
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
- Geparkt. Uneingeschränkt.
- Inaktiv. Kein Video und kein Konfigurationsbildschirm.
- Verschieben. Vollständig eingeschränkt (alle Einschränkungen sind erforderlich).
Die oben dargestellte Zuordnung ist vorab festgelegt und als XML-Ressource konfiguriert. Die
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
und speichert die Regeln
im Arbeitsspeicher. Der Dienst ordnet dann den aktuellen Fahrstatus den UX-Einschränkungen 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 Bildschirme angewendet. Einschränkung erstellen
für mehrere Displays konfigurieren, fügen Sie das RestrictionMapping
-Tag mit dem
physischerPort für diese Anzeige. Die entsprechenden Einschränkungen werden automatisch auf die einzelnen
Display. Im folgenden Beispiel haben die Bildschirme 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 Für den Standardmodus und den Passagiermodus sind unterschiedliche Einschränkungen konfiguriert (Bisher wurde nur der Modus Passagier 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>Mit der API können Sie einen beliebigen Stringnamen für den Modus festlegen. Zum Beispiel Methode
setRestrictionMode(@NonNull String mode)
in CarUxRestrictionsManager.
(Früher mussten Sie die Methode
setRestrictionMode(@CarUxRestrictionsManager.UxRestrictionMode int mode)
-Methode in
CarUxRestrictionsManager).
CarUxRestrictionsConfiguration-APIs
Einschränkungen mit CarUxRestrictionsConfiguration
Die neue Klasse CarUxRestrictionsConfiguration
wird 1:1 der aktuellen XML-Datei zugeordnet.
Konfigurationsschema. CarUxRestrictionsConfiguration
kann mit CarUxRestrictions.
erstellt werden, das die Konfiguration validiert.
nach "build()".
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. Diese Methode erfordert eine Berechtigung,
Car.PERMISSION_CAR_UX_RESTRICTIONS_CONFIGURATION
public synchronized boolean saveUxRestrictionsConfigurationForNextBoot( CarUxRestrictionsConfiguration config);
Neue Konfiguration für UX-Einschränkungen beibehalten
Wenn eine neue Konfiguration übergeben wird, gibt der UX-Einschränkungen-Dienst einen booleschen Wert zurück, um ob die neue Konfiguration gespeichert wurde. Diese neue Konfiguration wird nur verwendet, wenn Die integrierte Haupteinheit wird neu gestartet und das Auto parkt. Intern sind die UX-Einschränkungen Dienst enthält zwei Konfigurationssätze:
- Produktion: Diese Konfiguration ist zwar optional, wird aber häufig verwendet. Die UX Der Einschränkungsdienst liest diese Konfiguration beim Start.
- Bereitgestellt. Auch optional; diese Konfiguration hat keine Auswirkungen auf UX-Einschränkungen Er erhält den Status „Produktion“, wenn der Fahrdienst gestartet und das Auto geparkt wird.
Abbildung 1: Konfiguration des Produktions-Tracks
Fehler beheben
Bis CarPropertyManager Informationen zum Fahrstatus erhalten hat (z. B. während Systemstart), werden die UX-Einschränkungen nicht erzwungen. Das System funktioniert wie Geparkt.
Sollte das Lesen einer gespeicherten Konfiguration fehlschlagen (z. B. bei „SettingNotFoundException“-Ergebnisse), wird die Der UX-Einschränkungsdienst greift auf den hartcodierten, vollständig eingeschränkten Modus zurück:
// Idling/moving state is fully restricted. private static CarUxRestrictionsConfiguration generateDefaultConfig() {}
Fahrstatus und Nutzerbeschränkungen
Im Folgenden werden die Interaktionen beschrieben, die im folgenden Designdiagramm dargestellt werden:
Abbildung 2: Interaktionen mit dem Fahrzustand
Attribute zum Ableiten des Fahrstatus
Leiten Sie den Fahrzustand anhand der folgenden drei VehiclePropertyIds
ab:
Für Apps verfügbare APIs
Der Code befindet sich an folgenden Speicherorten:
Code | Standort |
---|---|
CarUxRestrictionsManager Öffentliche APIs zum Registrieren von Änderungen der UX-Einschränkungen. |
/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 zum Registrieren von Fahrstatusänderungen |
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
Um Fahrzustände zu simulieren, siehe Test: