Optimisation des distractions est fourni pour réduire l'interaction du conducteur avec l'application Paramètres la voiture est en mouvement. Certains paramètres peuvent avoir besoin d'être modifiés lorsque vous conduisez afin que l'application ne soit pas entièrement bloquées. Cependant, par défaut, la plupart des préférences sont désactivées l'activation des préférences facilement mises à jour.
Figure 1. Applications activées en conduisant
Des activités entières peuvent aussi être bloquées si elles ne sont pas optimisées pour la distraction comme indiqué ci-dessous. Cette méthode est actuellement utilisée principalement pour la recherche de paramètres.
Figure 2 Toutes les activités sont bloquées.
Vous pouvez personnaliser de base les performances de DO dans la configuration superpositions. Si vous avez besoin d'une personnalisation plus précise, d'autres modifications peuvent peuvent être réalisées à l'aide de code.
Personnalisation avancée
Lorsqu'une préférence est désactivée au volant, un toast s'affiche lorsque l'utilisateur appuie dessus
un message indiquant que la préférence n'est pas disponible pendant la conduite, à condition que la préférence
est associé à un contrôleur de préférences. Le message utilise le paramètre
Chaîne restricted_while_driving
, qui peut être personnalisée avec une superposition
(à condition que la chaîne ne dépasse pas 60 caractères).
Figure 3. Superposition personnalisée
Vous pouvez désactiver l'ensemble du framework DO à l'aide de config_always_ignore_ux_restrictions
.
Si cette règle est définie sur "true", le conducteur peut interagir avec tous les aspects
l'application Paramètres.
<bool name="config_always_ignore_ux_restrictions">true</bool>
Si la configuration ci-dessus est définie sur "False", l'application Paramètres utilise
config_ignore_ux_restrictions
pour déterminer les préférences à activer lorsque vous conduisez. Chaînes fournies ici
doit pointer vers les chaînes définies dans preference_keys.xml.
Exemple
Cet exemple montre comment activer un paramètre profondément imbriqué lorsque vous conduisez.
montre comment activer les paramètres de sortie de la synthèse vocale. Pour que cela fonctionne,
ajouter tous les paramètres de la hiérarchie à config_ignore_ux_restrictions
.
Cela inclut le système, les langues, la saisie et les préférences de synthèse vocale pour la configuration, car notre hiérarchie est
Système->Langues et Entrée -> Sortie de la synthèse vocale. Toutefois, les préférences
dans le fragment de synthèse vocale est toujours désactivée. Pour les activer,
nous devons ajouter les clés des
préférences que nous voulons rendre accessibles. Dans ce
Par exemple, nous voulons activer
les préférences de lecture, mais pas le moteur
Nous ajoutons donc pk_tts_playback_group
à notre configuration.
<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>
Personnalisation détaillée
Certaines préférences peuvent nécessiter un comportement plus personnalisé en activant/désactivant simplement une préférence en fonction de l'état de conduite. Par exemple : Le Bluetooth et le Wi-Fi ont déjà été modifiés pour afficher les appareils Bluetooth enregistrés ou points d'accès Wi-Fi pendant que vous conduisez.
Il n'existe actuellement aucune solution de configuration
des ajustements. À la place, vous pouvez créer une classe personnalisée qui étend
PreferenceController et remplace onApplyUxRestrictions()
pour obtenir
des modifications.
Lorsqu'un contrôleur de préférences personnalisées est créé, vous pouvez superposer le fichier XML correspondant pour remplacer le contrôleur de préférences par défaut par votre propre implémentation.
Exemples
Dans CarSettings, certaines préférences ont ce comportement plus personnalisé, qui peut être utilisés comme exemples pour une personnalisation supplémentaire. Par exemple, dans la liste des points d'accès Wi-Fi, le le comportement souhaité consiste à n'afficher que les points d'accès enregistrés lorsque vous conduisez (et en masquant le reste). Pour ce faire, procédez comme suit:
} else if (shouldApplyUxRestrictions(getUxRestrictions())) { wifiEntries = getCarWifiManager().getSavedWifiEntries(); } else { wifiEntries = getCarWifiManager().getAllWifiEntries(); }
Étant donné que les points d'accès qui apparaissent ici sont déjà restreints, vous
si vous ne souhaitez pas appliquer d'autres UxRestrictions
à ces préférences.
Par conséquent, remplacez onApplyUxRestrictions
et effectuez une opération intentionnelle
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. }
Un autre exemple est fourni dans la section Appareils connectés en Bluetooth.
Pour continuer à permettre aux appareils Bluetooth d'être connectés à et déconnectés, mais je voulais les
désactiver l'accès à des paramètres supplémentaires pour ces appareils. Pour ce faire, nous
remplacer à nouveau onApplyUxRestrictions
, mais cette fois, si NO_SETUP
est active, masquez l'action secondaire au niveau de la préférence.
@Override protected void onApplyUxRestrictions(CarUxRestrictions uxRestrictions) { super.onApplyUxRestrictions(uxRestrictions); if (CarUxRestrictionsHelper.isNoSetup(uxRestrictions)) { updateActionVisibility(getPreference(), /* isActionVisible= */ false); } }