Ablenkungsoptimierung die Interaktion des Fahrers mit der App „Einstellungen“ reduzieren, während in Bewegung ist. Möglicherweise müssen während der Fahrt einige Einstellungen geändert werden, damit die App vollständig blockiert. Die meisten Einstellungen sind jedoch standardmäßig deaktiviert, wenn nur die Tasten einfach zu aktualisieren.
Abbildung 1. Aktivierte Apps während der Fahrt
Auch ganze Aktivitäten können blockiert werden, wenn sie nicht abgelenkt werden, wie unten dargestellt. Diese Methode wird derzeit hauptsächlich für die Suche nach Einstellungen verwendet.
Abbildung 2. Alle Aktivitäten blockiert
Grundlegende Anpassungen der Leistung von DO können über die Konfiguration Overlays. Wenn Sie eine genauere Anpassung benötigen, können weitere Änderungen durch Code erfolgen kann.
Umfassende Anpassung
Wenn eine Einstellung während der Fahrt deaktiviert ist, wird beim Tippen darauf ein Toast angezeigt.
mit dem Hinweis, dass die Einstellung während der Fahrt nicht verfügbar ist,
mit einem bevorzugten Controller verbunden ist. In der Nachricht wird das
restricted_while_driving
-String, der mit einem Overlay angepasst werden kann
(vorausgesetzt, der String darf maximal 60 Zeichen lang sein).
Abbildung 3: Benutzerdefiniertes Overlay
Das gesamte DO-Framework kann mit config_always_ignore_ux_restrictions
deaktiviert werden.
Wenn dieser Wert auf „true“ gesetzt wird, kann der Fahrer mit jedem Aspekt des
Einstellungen.
<bool name="config_always_ignore_ux_restrictions">true</bool>
Wenn die Konfiguration oben auf „false“ gesetzt ist, greift die App für die Einstellungen auf
config_ignore_ux_restrictions
um zu ermitteln, welche Einstellungen während der Fahrt aktiviert werden sollen. Die hier angegebenen Strings
sollte auf die in preference_keys.xml.
definierten Strings verweisen
Beispiel
In diesem Beispiel wird gezeigt, wie Sie
während der Fahrt eine tief verschachtelte Einstellung
zeigt, wie die Text-to-Speech-Ausgabeeinstellungen aktiviert werden. Damit dies funktioniert,
alle Einstellungen in der Hierarchie zu config_ignore_ux_restrictions
hinzufügen.
Dazu gehören System, Sprachen und Eingabe sowie Sprachausgabe-Einstellungen für die Konfiguration, da unsere Hierarchie
System->Sprachen und Eingabe -> Text-in-Sprache-Ausgabe. Die Einstellungen
innerhalb des Sprachausgabe-Fragments ist immer noch deaktiviert. Um sie zu ermöglichen,
müssen die Schlüssel für die Einstellungen
hinzugefügt werden, die zugänglich sein sollen. In dieser
Wir möchten beispielsweise die Wiedergabeeinstellungen aktivieren, aber nicht die Suchmaschine.
Also fügen wir pk_tts_playback_group
zu unserer Konfiguration hinzu.
<string-array name="config_ignore_ux_restrictions"> [...] <item>@string/pk_system_settings_entry</item> <item>@string/pk_languages_and_input_settings</item> <item>@string/pk_tts_settings_entry</item> <item>@string/pk_tts_playback_group</item> </string-array>
Detaillierte Anpassung
Es gibt einige Einstellungen, die ein stärker angepasstes Verhalten erfordern das Aktivieren bzw. Deaktivieren einer Einstellung auf Basis des Fahrstatus. Beispiel: Bluetooth und WLAN wurden bereits geändert, sodass gespeicherte Bluetooth-Geräte oder WLAN-Zugangspunkte während der Fahrt.
Derzeit gibt es keine konfigurationsbasierte Lösung,
Anpassungen. Stattdessen können Sie eine benutzerdefinierte Klasse erstellen,
PreferenceController und überschreibt onApplyUxRestrictions()
, um den gewünschten
Änderungen.
Wenn ein Controller mit benutzerdefinierten Einstellungen erstellt wird, können Sie die entsprechende XML-Datei überlagern , um den Standard-Controller durch Ihre eigene Implementierung zu ersetzen.
Beispiele
In den Autoeinstellungen ist das Verhalten für einige Einstellungen besser angepasst. Sie können die als Beispiele für weitere Anpassungen dienen. In der Liste der WLAN-Zugangspunkte ist z. B. der Parameter gewünschtes Verhalten ist, dass während der Fahrt nur gespeicherte Zugangspunkte angezeigt und der Rest ausgeblendet wird. Gehen Sie dazu so vor:
} else if (shouldApplyUxRestrictions(getUxRestrictions())) { wifiEntries = getCarWifiManager().getSavedWifiEntries(); } else { wifiEntries = getCarWifiManager().getAllWifiEntries(); }
Da die hier angezeigten Zugangspunkte bereits eingeschränkt sind, kannst du
möchten keine zusätzlichen UxRestrictions
auf diese Einstellungen anwenden.
Überschreiben Sie daher onApplyUxRestrictions
und führen Sie eine absichtliche
No-Op:
@Override protected void onApplyUxRestrictions(CarUxRestrictions uxRestrictions) { // Since the list dynamically changes based on the UX restrictions, we // enable this fragment regardless of the restriction. Intentional no-op. }
Ein weiteres Beispiel finden Sie unter Geräte mit Bluetooth-Verbindung.
Um weiterhin zu ermöglichen, dass Bluetooth-Geräte mit ihr verbunden und getrennt werden können,
den Zugriff auf zusätzliche Einstellungen für diese Geräte zu deaktivieren. Um dies zu erreichen,
onApplyUxRestrictions
jedoch wieder überschreiben, wenn diesmal NO_SETUP
Einschränkung aktiv ist, sekundäre Aktion für die Einstellung ausblenden.
@Override protected void onApplyUxRestrictions(CarUxRestrictions uxRestrictions) { super.onApplyUxRestrictions(uxRestrictions); if (CarUxRestrictionsHelper.isNoSetup(uxRestrictions)) { updateActionVisibility(getPreference(), /* isActionVisible= */ false); } }