खास जानकारी

कार की सेटिंग (packages/apps/Car/Settings), खास तौर पर Android Automotive OS (AAOS). कार की सेटिंग, फ़ोन की सेटिंग से अलग होती हैं (packages/apps/Settings). कार की सेटिंग में फ़ोन की कुछ जानी-पहचानी सेटिंग होती हैं, कार की सेटिंग में, कार-फ़ाई वाला विज़ुअल यूज़र इंटरफ़ेस, ड्राइवर का ध्यान भटकने से रोकने के लिए ऑप्टिमाइज़ेशन, और OEM के लिए कई कस्टमाइज़ेशन एंट्री पॉइंट मौजूद हैं.

नीचे दी गई कार की सेटिंग की खास जानकारी के अलावा, इनसे जुड़ी अन्य जानकारी भी देखें कार की सेटिंग के बारे में ज़्यादा जानने के लिए विषय:

आर्किटेक्चर और दिशा-निर्देश

कार की सेटिंग में ज़्यादातर पेज, फ़्रैगमेंट की सीरीज़ के तौर पर लागू किए जाते हैं जो Settingsफ़्रैगमेंट को बढ़ाती है, जिसमें हर एक की अपनी गतिविधि तय होती है CarSettingsActivity. इन स्टैटिक गतिविधियों को BaseCarSettingsActivity से बढ़ाया जाता है. हालांकि इस नियम के कुछ अपवाद हैं, जैसे कि कुछ खास फ़्रैगमेंट SettingsFragment के बजाय Baseफ़्रैगमेंट और CarSettingsActive के बाहर की कुछ गतिविधियां हैं जिन्हें अपवाद माना जाना चाहिए (फ़ॉलो किए जाने वाले पैटर्न के तौर पर नहीं).

स्टैटिक प्राथमिकताएं

एक्सएमएल में Preference का इस्तेमाल करके, स्टैटिक प्रायॉरिटी तय की जाती है या CarUiPreference टैग के साथ जोड़ा जा सकता है. SettingsFragment को लागू करने के लिए, getPreferenceScreenResId() का इस्तेमाल किया जाता है तरीका है, ताकि यह तय किया जा सके कि किस एक्सएमएल फ़ाइल में, दिखाई जाने वाली प्राथमिकताओं की स्टैटिक सूची है.

डाइनैमिक प्राथमिकताएं

डाइनैमिक प्राथमिकताएं, PreferenceGroup का इस्तेमाल करती हैं टैग का इस्तेमाल करके या PreferenceGroup को लागू करना.

CarSettings ऐप्लिकेशन में, डाइनैमिक प्राथमिकताएं, ऐसी प्राथमिकताएं जो लोगों को CarSettings में अन्य पेजों पर ले जाती हैं, जिन्हें Preference के ज़रिए जोड़ा गया है कंट्रोलर के तौर पर उपलब्ध हो. उदाहरण के लिए, कीबोर्ड मैनेज करें भाषाएं और के अंतर्गत प्राथमिकता ऐसी इनपुट प्राथमिकता जो डाइनैमिक तरीके से इनपुट जोड़ती है प्राथमिकता पेज के लिए मैन्युअल तरीके का इस्तेमाल करें. यह इस बात पर निर्भर करता है कि क्या इनपुट के ये तरीके अनुमति है या नहीं.

ऐक्शन बार

हर सेटिंग स्क्रीन के सबसे ऊपर एक कार्रवाई बार होता है, जिसमें "वापस जाएं" और पूरक ऐक्शन विजेट, जैसे कि बटन और स्विच). ये ऐक्शन बार, ActionBar जैसे ही हैं Android से मिले हैं, लेकिन असल में ये कस्टम व्यू हैं. Android 11 और उसके बाद के वर्शन में चेसिस बेस लेआउट में टूलबार शामिल होता है, जिसमें टूलबार और ऐप्लिकेशन के बाकी कॉन्टेंट के लिए फ़्रेम लेआउट.

पूरक ऐक्शन विजेट, मेन्यूItem क्लास हैं और इन्हें इसमें बनाया जाना चाहिए SettingsFragment का onCreate या BaseFragment. विज़िबिलिटी, स्थिति वगैरह जैसी प्रॉपर्टी को SettingsFragment के बिज़नेस लॉजिक के हिसाब से, सेटर से कंट्रोल किया जा सकता है.

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

ऐक्शन बार, कार की सेटिंग में, डिस्ट्रैक्शन को ऑप्टिमाइज़ करने की सुविधा. MenuItem.Builder में, 'उपयोगकर्ता अनुभव से जुड़ी पाबंदियां' सेट करें.

प्राथमिकता कंट्रोलर

हर सेटिंग पेज में कई प्राथमिकताएं.

ये कॉम्पोनेंट आपस में कैसे जुड़े हैं, यह जानने के लिए नीचे दी गई इमेज देखें:

कार सेटिंग कॉम्पोनेंट

पहली इमेज. कार सेटिंग कॉम्पोनेंट

PreferenceController, लाइफ़साइकल के बारे में जानकारी देने वाला कॉम्पोनेंट है, जो खास प्राथमिकताओं से जुड़े कारोबारी लॉजिक को शामिल करें. PreferenceControllers को सिर्फ़ सही प्राथमिकता के साथ अटैच किया जा सकता है एक्सएमएल.

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

कार की सेटिंग साफ़ तौर पर PreferenceController को बनाने से रोकती हैं ताकि सेटिंग की हैरारकी में कम से कम Java कोड में बदलाव करता है.

ऐसा हो सकता है कि PreferenceController को डाइनैमिक डेटा की ज़रूरत हो ताकि सही तरीके से काम किया जा सके. उदाहरण के लिए, एक PreferenceController जो बंद हो जाता है किसी ऐप्लिकेशन की सूचनाओं के लिए यह जानना ज़रूरी है कि किस ऐप्लिकेशन पर कार्रवाई करनी है. एक्सएमएल में हमेशा PreferenceControllers तय होता है, इसलिए यहां कोई का इस्तेमाल करने का तरीका बताएंगे. इसके बजाय, ये अतिरिक्त वैल्यू PreferenceController पर सार्वजनिक सेटर के ज़रिए दिया जाता है और SettingsFragment में से use(...) तरीका.

// 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(...) तरीके का इस्तेमाल जितनी बार किया जाता है, इसे इस्तेमाल करना उतना ही मुश्किल होता है का मूल लक्ष्य, सेटिंग की हैरारकी को फिर से व्यवस्थित करने में मदद करना है. इसमें कम से कम बदलाव को मैन्युअल तौर पर जोड़ा जा सकता है, क्योंकि मौजूदा फ़्रैगमेंट कोड के बड़े सेक्शन को नया बनाया गया फ़्रैगमेंट. ऐसा करने में आने वाली दिक्कतों को कम करने का एक तरीका यह है कि:

  • use(...) का इस्तेमाल कम करें.
  • use(...) को किए गए हर कॉल को फ़्रैगमेंट में एक ही जगह पर रखने की कोशिश करें (उदाहरण के लिए, onAttach() तरीके में).

इंटेंट हैंडलिंग

सभी मकसद जिन्हें कार की सेटिंग ऐप्लिकेशन से मैनेज किया जाना चाहिए उनके बारे में यहां बताया गया है: मेनिफ़ेस्ट फ़ाइल से लिए जाते हैं. इंटेंट को आम तौर पर, ज़्यादातर स्टैंडर्ड Android ऐप्लिकेशन की तरह तय किया जाता है और मैनेज किया जाता है. मेनिफ़ेस्ट में तय की गई सभी गतिविधियों और इंटेंट फ़िल्टर के साथ.

रूट फ़्रैगमेंट बदलें

अगर आप चाहें, तो config_show_settings_root_exit_icon का इस्तेमाल करके, बाहर निकलें आइकॉन को दिखाया या छिपाया जा सकता है.

थीम को पसंद के मुताबिक बनाना

अन्य एट्रिब्यूट और संसाधनों को पसंद के मुताबिक बनाएं

कार की सेटिंग ऐप्लिकेशन में मुख्य तौर पर, CarSettingTheme, जो Theme.CarUi का एक्सटेंशन है. इस थीम का इस्तेमाल सिस्टम ऐप्लिकेशन का रंग-रूप दिखाना, ताकि सिस्टम को एक जैसा बनाया जा सके.

प्राथमिकताएं कस्टमाइज़ करें

प्राथमिकताएं कस्टमाइज़ करना इन अतिरिक्त जगहों तक फैला होता है:

  • कुछ बुनियादी प्राथमिकता क्लास का लेआउट car_preference में बताया गया है और ओवरला किया गया बनाने के लिए डिज़ाइन किया गया है. बेस प्राथमिकता क्लास के लिए कोई भी पसंद के मुताबिक लेआउट यहां बदला गया.
  • कार की सेटिंग common अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है पैकेज. इन्हें कार सेटिंग मॉड्यूल के अंदर अलग से लगाया जाना चाहिए बेस प्राथमिकता वाली क्लास.