Araba Ayarları (packages/apps/Car/Settings
), özellikle
Android Automotive OS (AAOS). Araba Ayarları, Telefon Ayarları'ndan farklı
(packages/apps/Settings
). Araba Ayarları bazı tanıdık telefon ayarları içerir ancak
Araba Ayarları, arabaya uygun bir görsel kullanıcı arayüzü, sürücünün dikkatini dağıtan unsurlar için optimizasyonlar sunar.
ve OEM'ler için çok sayıda özelleştirme giriş noktası bulunuyor.
Aşağıda sağlanan Araba Ayarları bölümüne genel bakışın yanı sıra aşağıdaki ilgili Araba Ayarları hakkında daha fazla bilgi edinebileceğiniz konular:
- Araba Ayarları Ekleme
- Araba Ayarlarını Yeniden Düzenleme
- Araba Ayarlarında Dikkat Dağılması Optimizasyonu
- Araba Ayarları Arama Dizine Ekleme
- Çift Bölme Özelleştirme
Mimari ve yönergeler
Araba Ayarları'ndaki sayfaların çoğu, bir dizi parça olarak uygulanmış
SettingsFragment'ı genişleten, her birinin kendine ait etkinlikleri
CarSettingEvents. Bu statik etkinlikler BaseCarSettingsActivity öğesinden genişletilir. Bu kuralın bazı istisnaları vardır. Örneğin,
SettingsFragment
yerine BaseFragment ve CarSettingEvents dışında kalan bazı Etkinlikler. Bunların tümü istisna olarak kabul edilmelidir (izlenecek kalıplar olarak değil).
Statik tercihler
Statik bir tercih, XML'de Tercih
veya CarUiPreference
kapanış etiketinin hemen öncesine yapıştırın. SettingsFragment
uygulaması, getPreferenceScreenResId()
yöntemini kullanın.
Dinamik tercihler
Dinamik tercihler, PreferenceGroup kullanır etiketini veya PreferenceGroup uygulamasını kullanmanın bir yoludur.
CarSettings uygulamasında dinamik tercihler, normal bir grup kullanıcıyı CarSettings içindeki ek sayfalara yönlendiren tercihleri, ancak Tercih Denetleyicisi yerine dosya erişimini kullanın. Klavyeleri yönetme Diller ve Dinamik olarak giriş ekleyen giriş tercihi bu giriş yöntemlerinin kullanılabilir olup olmadığına bağlı olarak, tercih sayfasına izin verilmez.
İşlem çubukları
Her ayar ekranının üst kısmında, içinde "geri" gezinme, ekran başlığı ve ek işlem widget'ları (örneğin, düğmeler ve anahtarlar). Bu işlem çubukları İşlem Çubuğu'na benzer ancak aslında özel görünümlerdir. Android 11 ve sonraki sürümlerde bu araç çubuğu, araç çubuğu ve uygulama içeriğinin geri kalanı için bir çerçeve düzeni.
Ek işlem widget'ları, MenuItem sınıflarıdır ve
ilgili SettingsFragment
veya onCreate
öğesinin
BaseFragment
. Görünürlük, durum vb. özellikler
SettingsFragment
iş mantığına göre belirleyiciler tarafından kontrol edilmelidir.
// ExampleSettingsFragment.java public class ExampleSettingsFragment extends SettingsFragment { @Override protected List<MenuItem> getToolbarMenuItems() { return Collections.singletonList(mClearConfirmButton); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mButton = new MenuItem.Builder(getContext()) .setTitle(R.string.text) .setOnClickListener(mOnClickListener) .setUxRestrictions(CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP) .build(); } private void updateState() { button.setVisible(false); } }
İşlem çubuklarında
Araba Ayarları'nda Dikkat Dağılması Optimizasyonu.
İçerik üretmeyle ilgili olarak MenuItem.Builder
içindeki UXRestrictions'i belirleyin.
Tercih denetleyicileri
Her ayar sayfasında çeşitli ayarlar Tercihler.
Bu bileşenlerin birbiriyle nasıl ilişkili olduğunu öğrenmek için aşağıdaki resme bakın:
Şekil 1. CarSettings Bileşenleri
PreferenceController
, yaşam döngüsüne duyarlı bir bileşendir ve
Belirli Tercihlere ilişkin iş mantığını özetleyebilir.
PreferenceControllers
, yalnızca ilgili Tercih'e eklenebilir.
XML.
// example_settings_fragment.xml <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" android:title="@string/example_settings_title"> <Preference android:key="@string/pk_example_preference_key" android:title="@string/example_preference_title" settings:controller="com.android.car.settings.example.ExamplePreferenceController"/> </PreferenceScreen>
Araba Ayarları, PreferenceController
oluşturulmasını açıkça engelliyor
kod kullanarak ayarlar hiyerarşisini çok az çabayla değiştirmeyi kolaylaştırmak
bazı değişiklikler var.
PreferenceController
için dinamik veriler gerekebilir
düzgün şekilde çalışmasını sağlamalısınız. Örneğin, kapanan bir PreferenceController
bildirimlerinin hangi uygulamada işlem yapacağını bilmesi gerekir.
PreferenceControllers
her zaman XML'de tanımlandığından
için ek kurucu bağımsız değişkenleri sağlamanın bir yolunu sunar. Bunun yerine bu ek değerler
PreferenceController
aracılığıyla herkese açık setler aracılığıyla sağlanır ve
SettingsFragment
aracılığıyla use(...)
yöntemi.
// ExamplePreferenceController.java public class ExamplePreferenceContorller extends PreferenceController<Preference> { private ExampleArg mExampleArg; public ExamplePreferenceController(...) { ... } public void setExampleArg(ExampleArg exampleArg) { mExampleArg = exampleArg; } } // ExampleSettingsFragment.java public class ExampleSettingsFragment extends SettingsFragment { @Override @XmlRes protected int getPreferenceScreenResId() { Return R.xml.example_settings_fragment; } @Override public void onAttach(Context context) { ExampleArg arg = (ExampleArg) getArguments().getSerializeable(ARG_KEY); ExamplePreferenceController controller = use(ExamplePreferenceController.class, R.string.pk_example_preference_key); controller.setExampleArg(arg); } }
use(...)
yöntemi ne kadar sık kullanılırsa yöntemi korumak da o kadar zor hale gelir.
asıl hedef, ayarlar hiyerarşisini en az düzeyde değişiklik yaparak
mevcut parça kodunun büyük bölümlerinin Google’a kopyalanması gerektiğinden,
yeni oluşturulan parçaya geri dönelim. Bunu yapmanın zorluğunu en aza indirmenin bir yolu şudur:
use(...)
kullanımınızı en aza indirin.use(...)
için yapılan her çağrıyı parçada tek bir yerde tutmaya çalışın (örneğin,onAttach()
yönteminde).
Amaç işleme
Tüm amaçlar tarafından yapılması gereken ayarlar manifest dosyası olarak kaydedebilirsiniz. Amaçlar genellikle çoğu standart Android uygulaması gibi tanımlanır ve işlenir. Manifest dosyasında tanımlanan tüm etkinlikler ve intent filtreleriyle
Kök parçayı değiştirme
İstenirse Çıkış simgesi config_show_settings_root_exit_icon
kullanılarak görüntülenebilir veya gizlenebilir.
Temayı özelleştirin
Diğer özellikleri ve kaynakları özelleştirme
Araba Ayarları uygulaması çoğunlukla CarSettingTheme
kullanır.
ve Theme.CarUi
uzantısıdır. Bu tema, tablodaki
sistemde tutarlılığı sağlamak için sistem uygulamalarının görünümünü ve hissini verir.
Tercihleri özelleştirin
Tercihlerin özelleştirilmesi aşağıdaki ek konumları da kapsar:
- Bazı temel tercih sınıflarının düzeni
car_preference
içinde tanımlanmıştır ve yer paylaşımlı en iyi uygulamaları paylaşacağım. Temel tercih sınıflarına ilişkin özelleştirme düzenleri burada değiştirilir. - Araba Ayarları, öncelikle
common
. paketinden yararlanın. Bunlar, temel tercih sınıflarıdır.