सार्वभौमिक खोज

एंड्रॉइड 8.0 सेटिंग्स मेनू के लिए विस्तारित खोज क्षमताओं को जोड़ता है। यह दस्तावेज़ वर्णन करता है कि सेटिंग कैसे जोड़ें और यह सुनिश्चित करें कि यह सेटिंग खोज के लिए ठीक से अनुक्रमित है।

अनुक्रमित करने योग्य सेटिंग्स बनाना

प्रत्येक सेटिंग्स खंड जिसे अनुक्रमित करने की आवश्यकता होती है, Indexable इंटरफ़ेस लागू करता है, और स्थिर फ़ील्ड की आवश्यकता होती है:

public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER

एक बार जब आपका टुकड़ा अनुक्रमण के लिए सेट हो जाए, तो उसे यहां पाए जाने वाले SearchIndexableResources में जोड़ें:
packages/apps/Settings/src/com/android/settings/search/SearchIndexableResources.java

वैकल्पिक तरीके

इस SearchIndexProvider इंटरफ़ेस में चार वैकल्पिक विधियाँ हैं।

getXmlResourcesToIndex

  • यदि आपकी खंड सामग्री यहां से है: preference xml तो इसे ओवरराइड करें
  • अनुक्रमित की जाने वाली सूची के रूप में XML प्राथमिकता लौटाता है।

XML संसाधन उदाहरण:

public List<SearchIndexableResource> getXmlResourcesToIndex(Context context, boolean enabled) {
    ArrayList<SearchIndexableResource> result =  new ArrayList<SearchIndexableResource>();
SearchIndexableResource sir = new SearchIndexableResource(context);
	sir.xmlResId = R.xml.display_settings;
	result.add(sir);

    return result;
}

getRawDataToIndex

  • यदि आपकी खंड सामग्री preference xml से नहीं है तो इसे ओवरराइड करें
  • अनुक्रमित किए जाने वाले कच्चे डेटा ( SearchIndexableRaw ) की एक सूची लौटाता है।

कच्चा डेटा उदाहरण:

public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) {
              final List<SearchIndexableRaw> result = new ArrayList<>();
              final Resources res = context.getResources();

              // Add fragment title
       SearchIndexableRaw data = new SearchIndexableRaw(context);
       data.title = res.getString(R.string.wifi_settings);
       data.screenTitle = res.getString(R.string.wifi_settings);
       data.keywords = res.getString(R.string.keywords_wifi);
       data.key = DATA_KEY_REFERENCE;
       result.add(data);

       return result;
}

GetNonIndexableKeys

  • यदि आपका टुकड़ा DashboardFragment है, तो आपको शायद ही कभी इसे ओवरराइड करने की आवश्यकता होगी।
  • उन कुंजियों की एक सूची लौटाता है जो उन परिणामों से मेल खाती हैं जो दिए गए उपयोगकर्ता, डिवाइस, कॉन्फ़िगरेशन आदि के लिए दिखाई नहीं देनी चाहिए। यहां प्रदान की गई कुंजियाँ SearchIndexableResource और SearchIndexableRaw में कुंजी फ़ील्ड से मेल खाना चाहिए।
  • उदाहरण के लिए: डेटा उपयोग उन उपयोगकर्ताओं के लिए नहीं दिखना चाहिए जिनके डिवाइस में कभी सिम कार्ड नहीं था।

गैर-अनुक्रमणीय कुंजियाँ उदाहरण:

public List<String> getNonIndexableKeys(Context context) {
      final List<String> keys = super.getNonIndexableKeys(context);
              if (!checkIntentAction(context, "android.settings.TERMS")) {
                  keys.add(KEY_TERMS);
              }
              if (!checkIntentAction(context, "android.settings.LICENSE")) {
                  keys.add(KEY_LICENSE);
              }
              if (!checkIntentAction(context, "android.settings.COPYRIGHT")) {
                  keys.add(KEY_COPYRIGHT);
              }
              if (!checkIntentAction(context, "android.settings.WEBVIEW_LICENSE")) {
                  keys.add(KEY_WEBVIEW_LICENSE);
              }
              return keys;
}

getPreferenceControllers

इस टुकड़े से जुड़े वरीयता नियंत्रकों की एक सूची लौटाता है। इस सूची का उपयोग इनलाइन परिणाम बनाने, गैर-अनुक्रमणिका को अद्यतन करने आदि के लिए किया जाता है।

इस प्रकार, जो कुछ भी आप खोज में दिखाना चाहते हैं उसे getXmlResourcesToIndex या getRawDataToIndex में शामिल किया जाना चाहिए।

अपनी सेटिंग्स के लिए कीवर्ड जोड़ना

यह सुनिश्चित करने के लिए कि कोई सेटिंग आसानी से खोजी जा सके, ऐसे कीवर्ड जोड़ें जो उस सेटिंग के लिए प्रासंगिक हों जिनका उपयोग उपयोगकर्ता सेटिंग खोजने के लिए कर सकता है।

कीवर्ड जोड़ते समय ध्यान देने योग्य बातें:

  • कीवर्ड उन शब्दों की एक सूची है जिन्हें उपयोगकर्ता आवश्यक रूप से नहीं देखता है, लेकिन सेटिंग कैसे काम करती है, इसके लिए यह उनके मानसिक मॉडल का हिस्सा हो सकता है।
  • ये वे शब्द हैं जिन्हें उपयोगकर्ता आपकी सेटिंग पर जाने के लिए टाइप कर सकता है।
  • वे पर्यायवाची हो सकते हैं या सेटिंग से जुड़े किसी भी शब्द का उपयोग किया जा सकता है।
  • उदाहरण के लिए, वॉल्यूम सेटिंग ढूंढने के लिए "म्यूट" का उपयोग किया जा सकता है।

नकल से बचना

यदि आप बिना शर्त किसी सेटिंग पृष्ठ को दबा रहे हैं, तो परिणामों के दोहराव से बचने के लिए मूल पृष्ठ की अनुक्रमणिका को हटा दें।

  1. जिस पृष्ठ को आप दबा रहे हैं उसका PreferenceFragment ढूंढें।
  2. SearchIndexProvider हटाएं.

मान्यकरण

किसी नई सेटिंग की खोज क्षमता का परीक्षण करने के लिए:

  1. डिवाइस पर O का नवीनतम संस्करण स्थापित करें।
  2. चयन करके डेटाबेस को पुनः अनुक्रमित करें:
  3. सेटिंग्स > ऐप्स और सूचनाएं > ऐप्स जानकारी > सेटिंग्स > स्टोरेज > डेटा साफ़ करें
  4. सत्यापित करें कि लक्ष्य सेटिंग्स खोज में दिखाई देती हैं।
    किसी सेटिंग के शीर्षक के उपसर्ग की खोज करने से उसका मिलान हो जाएगा.

इस सुविधा के कार्यान्वयन को मान्य करने के लिए ये रोबोइलेक्ट्रिक परीक्षण चलाए जा सकते हैं:
packages/apps/Settings/tests/robotests/src/com/android/settings/search

निर्माण लक्ष्य है: RunSettingsRoboTests