সার্বজনীন অনুসন্ধান

Android 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;
}

NonIndexableKeys পান

  • যদি আপনার খণ্ডটি একটি DashboardFragment হয়, তাহলে আপনাকে খুব কমই এটিকে ওভাররাইড করতে হবে।
  • প্রদত্ত ব্যবহারকারী, ডিভাইস, কনফিগারেশন, ইত্যাদির জন্য দেখানো উচিত নয় এমন ফলাফলের সাথে সম্পর্কিত কীগুলির একটি তালিকা প্রদান করে। এখানে দেওয়া কীগুলি SearchIndexableResource এবং SearchIndexableRaw এর KEY ক্ষেত্রের সাথে মেলে।
  • উদাহরণ স্বরূপ: যাদের ডিভাইসে কখনও সিম কার্ড নেই তাদের জন্য ডেটা ব্যবহার দেখানো উচিত নয়৷

নন-ইনডেক্সযোগ্য কী উদাহরণ:

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

পছন্দ কন্ট্রোলার পান

এই খণ্ডের সাথে যুক্ত পছন্দের কন্ট্রোলারের একটি তালিকা প্রদান করে। এই তালিকাটি ইনলাইন ফলাফল তৈরি করতে, নন-ইনডেক্সেবল আপডেট করতে ব্যবহার করা হয়।

সুতরাং, আপনি অনুসন্ধানে যা কিছু দেখাতে চান তা অবশ্যই getXmlResourcesToIndex বা getRawDataToIndex এ অন্তর্ভুক্ত করতে হবে।

আপনার সেটিংসের জন্য কীওয়ার্ড যোগ করা হচ্ছে

একটি সেটিং সহজে অনুসন্ধানযোগ্য তা নিশ্চিত করতে, ব্যবহারকারী সেটিং অনুসন্ধান করতে ব্যবহার করতে পারে এমন সেটিং এর জন্য প্রাসঙ্গিক কীওয়ার্ড যোগ করুন।

কীওয়ার্ড যোগ করার সময় যে বিষয়গুলো বিবেচনা করতে হবে:

  • কীওয়ার্ড হল শব্দের একটি তালিকা যা ব্যবহারকারী অগত্যা দেখতে পায় না কিন্তু সেটিংটি কীভাবে কাজ করে তার জন্য তাদের মানসিক মডেলের অংশ হতে পারে।
  • এই শব্দগুলি ব্যবহারকারী আপনার সেটিং পেতে টাইপ করতে পারে.
  • এগুলি সমার্থক হতে পারে বা সেটিং এর সাথে যুক্ত যেকোন শব্দ ব্যবহার করা যেতে পারে।
  • উদাহরণস্বরূপ, ভলিউম সেটিং খুঁজে পেতে "নিঃশব্দ" ব্যবহার করা যেতে পারে।

নকল এড়ানো

আপনি যদি কোনো সেটিংস পৃষ্ঠাকে নিঃশর্তভাবে দমন করে থাকেন, তাহলে ফলাফলের নকল এড়াতে মূল পৃষ্ঠার ইন্ডেক্সিং সরিয়ে দিন।

  1. আপনি যে পৃষ্ঠাটি দমন করছেন তার PreferenceFragment খুঁজুন।
  2. SearchIndexProvider সরান।

বৈধতা

একটি নতুন সেটিং এর অনুসন্ধানযোগ্যতা পরীক্ষা করতে:

  1. ডিভাইসে O এর একটি সাম্প্রতিক সংস্করণ ইনস্টল করুন।
  2. নির্বাচন করে ডাটাবেস পুনঃসূচীকরণ করুন:
  3. সেটিংস > অ্যাপ ও বিজ্ঞপ্তি > অ্যাপের তথ্য > সেটিংস > স্টোরেজ > ডেটা সাফ করুন
  4. অনুসন্ধানে প্রদর্শিত লক্ষ্য সেটিংস যাচাই করুন।
    একটি সেটিংসের শিরোনামের একটি উপসর্গ অনুসন্ধান করলে এটি মিলবে।

এই বৈশিষ্ট্যের বাস্তবায়ন যাচাই করতে এই রোবোলেক্ট্রিক পরীক্ষা চালানো হতে পারে:
packages/apps/Settings/tests/robotests/src/com/android/settings/search

বিল্ড টার্গেট হল: RunSettingsRoboTests