Araç Ayarları ( packages/apps/Car/Settings
) özellikle Android Automotive OS (AAOS) için sağlanmıştır. Araç Ayarları, Telefon Ayarlarından ( packages/apps/Settings
) farklıdır. Araç Ayarları bazı tanıdık telefon ayarlarını içerirken, Araç Ayarları araç odaklı bir görsel kullanıcı arayüzü, sürücünün dikkatini dağıtacak optimizasyonlar ve OEM'ler için çok sayıda özelleştirme giriş noktası sağlar.
Aşağıda verilen Araç Ayarlarına ilişkin genel bakışa ek olarak, Araç Ayarları hakkında daha fazla bilgi edinmek için şu ilgili konulara bakın:
- Araç Ayarları Ekleme
- Araç Ayarlarını Yeniden Düzenleme
- Araç Ayarlarında Dikkat Dağıtma Optimizasyonu
- Araç Ayarları Arama İndeksleme
- Çift Bölmeli Özelleştirme
Mimari ve yönergeler
Araba Ayarları'ndaki sayfaların çoğu, SettingsFragment'i genişleten bir dizi parça olarak uygulanır ve her biri CarSettingActivities'de tanımlanan kendi etkinliğine sahiptir. Bu statik aktiviteler BaseCarSettingsActivity'den genişletilmiştir. Bu kuralın, SettingsFragment
yerine BaseFragment'i genişleten bazı özel parçalar ve CarSettingActivities dışında bulunan bazı Activity'ler gibi birkaç istisnası olsa da bunların tümü istisna olarak kabul edilmelidir (takip edilecek modeller olarak değil).
Statik tercihler
Statik bir tercih XML'de Preference veya CarUiPreference etiketi kullanılarak tanımlanır. SettingsFragment
uygulaması, hangi XML dosyasının görüntülenecek statik tercihler listesini içerdiğini tanımlamak için getPreferenceScreenResId()
yöntemini kullanır.
Dinamik tercihler
Dinamik tercihler, PreferenceGroup etiketini veya PreferenceGroup'un bir uygulamasını kullanır.
CarSettings uygulamasında dinamik tercihler, kullanıcıyı CarSettings içindeki ek sayfalara yönlendiren ancak XML yerine Tercih Denetleyicisi aracılığıyla eklenen normal bir tercihler kümesini temsil eder. Bunun bir örneği, bu giriş yöntemlerine izin verilip verilmediğine bağlı olarak giriş yöntemlerini tercih sayfasına dinamik olarak ekleyen Diller ve Giriş tercihi altındaki Klavyeleri yönet tercihidir.
Eylem çubukları
Her ayarlar ekranının üst kısmında, "geri" gezinme, ekran başlığı ve tamamlayıcı eylem widget'larını (örneğin, düğmeler ve anahtarlar) içerebilen bir eylem çubuğu bulunur. Bu eylem çubukları, Android tarafından sağlanan ActionBar'a benzer ancak aslında özel görünümlerdir. Android 11 ve üzeri sürümlerde bu araç çubuğu, araç çubuğu görünümlerini ve uygulama içeriğinin geri kalanı için bir çerçeve düzenini içeren kasa tabanı düzenine dahil edilir.
Tamamlayıcı eylem widget'ları MenuItem sınıflarıdır ve ilgili SettingsFragment
veya BaseFragment
öğesinin onCreate
öğesinde oluşturulmalıdır. Görünürlük, durum vb. özellikler, SettingsFragment
iş mantığındaki ayarlayıcılar 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); } }
Eylem çubukları Araç Ayarlarında Dikkat Dağıtma Optimizasyonu desteğiyle birlikte gelir. Oluşturma sırasında MenuItem.Builder
UXRestrictions'ı ayarlayın.
Tercih denetleyicileri
Her ayarlar sayfasında çeşitli Tercihler bulunabilir.
Bu bileşenlerin nasıl ilişkili olduğunu görmek için aşağıdaki resme bakın:
Şekil 1. CarSettings Bileşenleri
PreferenceController
, belirli Tercihlere ilişkin iş mantığını özetlemeye yardımcı olan, yaşam döngüsüne duyarlı bir bileşendir. PreferenceControllers
yalnızca ilgili Tercihe XML aracılığıyla eklenebilir.
// 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>
Araç Ayarları, Java kodunda minimum değişiklikle Ayarlar hiyerarşisini değiştirmeyi kolaylaştırmak için kod aracılığıyla PreferenceController
oluşturulmasını açıkça engeller.
Bir PreferenceController
doğru çalışması için bazı dinamik verilere ihtiyaç duyması mümkündür. Örneğin, bir uygulamaya ilişkin bildirimleri kapatan bir PreferenceController
hangi uygulamada işlem yapacağını bilmesi gerekir. PreferenceControllers
her zaman XML'de tanımlandığından, ek yapıcı argümanları sağlamanın bir yolu yoktur. Bunun yerine, bu ek değerler PreferenceController
üzerindeki genel ayarlayıcılar aracılığıyla sağlanır ve SettingsFragment
öğesindeki use(...)
yöntemi kullanılarak ayarlanır.
// 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ıklıkla kullanılırsa, Java kodunda minimum değişiklikle ayarlar hiyerarşisini yeniden düzenleyebilme şeklindeki orijinal hedefi korumak o kadar zorlaşır, çünkü mevcut parça kodunun büyük bölümlerinin yeniden düzenlenmesi gerekir. yeni oluşturulan parçaya kopyalandı. Bunu yapmanın zorluğunu en aza indirmenin bir yolu şudur:
- Kullanım kullanımınızı en aza indirin
use(...)
. -
use(...)
için yapılan her çağrıyı parçada tek bir yerde (örneğin,onAttach()
yönteminde) tutmaya çalışın.
Niyet yönetimi
Araç Ayarları uygulaması tarafından ele alınması gereken tüm niyetler manifest dosyasında tanımlanmıştır. Niyetler genellikle çoğu standart Android uygulaması gibi tanımlanır ve işlenir; tüm etkinlikler ve amaç filtreleri manifestte tanımlanır.
Kök parçasını değiştir
İ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ştirin
Araç Ayarları uygulaması öncelikle Theme.CarUi
uzantısı olan CarSettingTheme
öğesini kullanır. Bu tema, sistemde tutarlılığı sağlamak amacıyla sistem uygulamalarının görünüm ve hissini standartlaştırmak için kullanılır.
Tercihleri özelleştirin
Tercihlerin özelleştirilmesi şu ek konumları kapsar:
- Bazı temel tercih sınıflarının düzeni
car_preference
tanımlanır ve araba yapıları için üst üste bindirilir . Temel tercih sınıflarına ilişkin tüm özelleştirme düzenleri burada değiştirilebilir. - Araç Ayarları, öncelikle
common
pakette tanımlanan bazı özel tercihleri kullanır. Bunlar, Araç Ayarları modülünde temel tercih sınıflarından ayrı olarak yerleştirilmelidir.