Araba Ayarlarında dikkat dağıtma optimizasyonu

Dikkat dağıtma optimizasyonu (DO) sırasında sürücünün Ayarlar uygulamasıyla etkileşimini azaltacak bir araç olarak hareket ediyor olabilir. Sürüş sırasında bazı ayarların değiştirilmesi gerekebilir. Bu nedenle uygulama, tamamen engellendi. Ancak varsayılan olarak çoğu tercih yalnızca anahtar ve Kolayca güncellenen tercihlerin etkinleştirilmesini sağlayabilirsiniz.

Sürüş sırasında etkin olan uygulamalar

Şekil 1. Sürüş sırasında etkinleştirilen uygulamalar

Dikkat dağıtıcı unsurlar optimize edilmemişse tüm etkinlikler de engellenebilir. aşağıda gösterildiği gibidir. Bu yöntem şu anda öncelikli olarak ayarlar araması için kullanılmaktadır.

Tüm etkinlikler engellendi

Şekil 2. Tüm etkinlikler engellendi

Temel özelleştirmeler, yapılandırma aracılığıyla yapılabilir. kullanır. Daha ayrıntılı özelleştirmeye ihtiyacınız olursa ek değişiklikler kod yoluyla yapılması gerekir.

Üst düzey özelleştirme

Sürüş sırasında bir tercih devre dışı bırakıldığında bu tercihe dokunduğunuzda bir kadeh kaldırın Bu tercihin, sürüş sırasında kullanılamayacağını belirten bir mesaj bir tercih denetleyici eklenmiş olmalıdır. İleti, Yer paylaşımıyla özelleştirilebilen restricted_while_driving dizesi (dizenin 60 karakter sınırını aşması şartıyla).

Özelleştirilmiş yer paylaşımı

Şekil 3. Özelleştirilmiş yer paylaşımı

DO çerçevesinin tamamı config_always_ignore_ux_restrictions kullanılarak devre dışı bırakılabilir. Bunu true (doğru) değerine ayarlamak, sürücünün aracın her yönüyle Ayarlar uygulaması.

<bool name="config_always_ignore_ux_restrictions">true</bool>

Yukarıdaki yapılandırma yanlış değerine ayarlanırsa Ayarlar uygulaması config_ignore_ux_restrictions değerine döner sürüş sırasında hangi tercihlerin etkinleştirilmesi gerektiğini belirlemek için. Burada sağlanan dizeler preference_keys.xml. içinde tanımlanan dizelere işaret etmelidir

Örnek

Bu örnek, sürüş sırasında derin iç içe yerleştirilmiş ayarın nasıl etkinleştirileceğini göstermek için Metin-Konuşma (TTS) çıkış ayarlarının nasıl etkinleştirileceğini gösterir. Bunun işe yarayabilmesi için hiyerarşideki tüm ayarları config_ignore_ux_restrictions öğesine ekleyin. Buna sistem, diller ve giriş ile yapılandırmadaki TTS tercihleri de dahildir çünkü hiyerarşimiz Sistem->Diller ve Giriş->Metin okuma çıkışı. Ancak tercihler hâlâ devre dışı bırakılmış durumdadır. Bu seçenekleri mümkün kılmak için erişilebilir olmasını istediğimiz tercihler için anahtarlar eklememiz gerekir. Burada oynatma tercihlerini etkinleştirmek istiyor ancak Bu nedenle, yapılandırmamıza pk_tts_playback_group değerini ekliyoruz.

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

Ayrıntılı özelleştirme

Bazı tercihler, e-postalarınızın görünmesini istediğiniz sürüş durumuna göre bir tercihi etkinleştirmek/devre dışı bırakmak. Örneğin, Bluetooth ve kablosuz ayarları, kaydedilen Bluetooth cihazları gösterecek şekilde değiştirilmiş veya Sürüş sırasında kablosuz erişim noktaları.

Şu anda bu tür dosyaları oluşturmaya yönelik yapılandırma tabanlı bir çözüm yoktur. ayarlamalar yapabilirsiniz. Bunun yerine, 100 dakikadan daha geniş bir PreferenceController ve onApplyUxRestrictions() geçersiz kılmaları anlamına gelir.

Özel bir tercih denetleyicisi oluşturulduğunda, ilgili XML dosyasını kendi uygulamanızla değiştirin.

Örnekler

CarSettings'de bazı tercihler daha özelleştirilmiş bir davranışa sahiptir. örnek olarak kullanılmıştı. Örneğin, Kablosuz erişim noktası listesinde, yalnızca sürüş sırasında kayıtlı erişim noktalarını göstermek (ve gerisini gizlemek) tercih edilmelidir. Bunun için aşağıdakileri yapın:

} else if (shouldApplyUxRestrictions(getUxRestrictions())) {
    wifiEntries = getCarWifiManager().getSavedWifiEntries();
} else {
    wifiEntries = getCarWifiManager().getAllWifiEntries();
}

Burada görünen erişim noktaları zaten kısıtlı olduğundan , bu tercihlere ek UxRestrictions uygulamak istemiyor. Bu nedenle, onApplyUxRestrictions geçersiz kılınıp bilinçli bir şekilde işlem yapın işlemsiz:

@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.
}

Bluetooth'a bağlı cihazlarda başka bir örnek sağlanmıştır. Bluetooth cihazlarına bağlanmayı ve bu cihazların bağlantısını kesmeyi etkinleştirmeye devam etmek, ancak bu cihazlar için ek ayarlara erişmeyi devre dışı bırakın. Bunu başarmak için tekrar onApplyUxRestrictions geçersiz kılınır ancak bu kez NO_SETUP kısıtlama etkin, tercihte ikincil işlemi gizleyin.

@Override
protected void onApplyUxRestrictions(CarUxRestrictions uxRestrictions) {
    super.onApplyUxRestrictions(uxRestrictions);
    if (CarUxRestrictionsHelper.isNoSetup(uxRestrictions)) {
        updateActionVisibility(getPreference(), /* isActionVisible= */ false);
    }
}