Ablenkungsoptimierung in den Autoeinstellungen

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.

Während der Fahrt aktivierte Apps

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.

Alle Aktivitäten blockiert

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).

Benutzerdefiniertes Overlay

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);
    }
}