একটি অনুসন্ধান ইন্টারফেস তৈরি করুন

আপনি যখন আপনার অ্যাপে সার্চ কার্যকারিতা যোগ করতে প্রস্তুত হন, তখন অ্যানড্রয়েড আপনাকে ইউজার ইন্টারফেস প্রয়োগ করতে সাহায্য করে হয় একটি সার্চ ডায়ালগ যা অ্যাক্টিভিটি উইন্ডোর শীর্ষে প্রদর্শিত হয় অথবা একটি সার্চ উইজেট যা আপনি আপনার লেআউটে সন্নিবেশ করতে পারেন। অনুসন্ধান ডায়ালগ এবং উইজেট উভয়ই আপনার অ্যাপে একটি নির্দিষ্ট কার্যকলাপে ব্যবহারকারীর অনুসন্ধান ক্যোয়ারী সরবরাহ করতে পারে। এইভাবে, ব্যবহারকারী যেকোন কার্যকলাপ থেকে একটি অনুসন্ধান শুরু করতে পারে যেখানে অনুসন্ধান ডায়ালগ বা উইজেট পাওয়া যায় এবং সিস্টেমটি অনুসন্ধান এবং উপস্থিত ফলাফলগুলি সম্পাদন করার জন্য উপযুক্ত কার্যকলাপ শুরু করে।

অনুসন্ধান ডায়ালগ এবং উইজেটের জন্য উপলব্ধ অন্যান্য বৈশিষ্ট্যগুলির মধ্যে রয়েছে:

  • ভয়েস অনুসন্ধান
  • সাম্প্রতিক প্রশ্নের উপর ভিত্তি করে পরামর্শ অনুসন্ধান করুন
  • আপনার অ্যাপ ডেটাতে প্রকৃত ফলাফলের সাথে মেলে এমন সার্চ সাজেশন

অনুসন্ধান ডায়ালগ বা অনুসন্ধান উইজেট ব্যবহার করে অনুসন্ধানের প্রশ্নগুলি সরবরাহ করতে অ্যান্ড্রয়েড সিস্টেম দ্বারা সহায়তা করে এমন একটি অনুসন্ধান ইন্টারফেস সরবরাহ করতে আপনার অ্যাপটি কীভাবে সেট আপ করবেন তা এই দস্তাবেজটি দেখায়৷

সম্পর্কিত সম্পদ:

বুনিয়াদি

আপনি শুরু করার আগে, আপনি অনুসন্ধান ডায়ালগ বা অনুসন্ধান উইজেট ব্যবহার করে আপনার অনুসন্ধান ইন্টারফেস বাস্তবায়ন করতে চান কিনা তা নির্ধারণ করুন। তারা একই অনুসন্ধান বৈশিষ্ট্য প্রদান করে, কিন্তু সামান্য ভিন্ন উপায়ে:

  • অনুসন্ধান ডায়ালগ হল একটি UI উপাদান যা Android সিস্টেম দ্বারা নিয়ন্ত্রিত হয়৷ ব্যবহারকারী দ্বারা সক্রিয় করা হলে, অনুসন্ধান ডায়ালগ কার্যকলাপের শীর্ষে প্রদর্শিত হয়।

    অ্যান্ড্রয়েড সিস্টেম অনুসন্ধান ডায়ালগের সমস্ত ইভেন্ট নিয়ন্ত্রণ করে। যখন ব্যবহারকারী একটি ক্যোয়ারী জমা দেয়, তখন সিস্টেম অনুসন্ধানগুলি পরিচালনা করার জন্য আপনার নির্দিষ্ট করা কার্যকলাপে ক্যোয়ারী প্রদান করে। ব্যবহারকারী টাইপ করার সময় ডায়ালগ অনুসন্ধানের পরামর্শও প্রদান করতে পারে।

  • অনুসন্ধান উইজেট হল SearchView এর একটি উদাহরণ যা আপনি আপনার লেআউটের যেকোনো জায়গায় রাখতে পারেন। ডিফল্টরূপে, অনুসন্ধান উইজেটটি একটি আদর্শ EditText উইজেটের মতো আচরণ করে এবং কিছু করে না, তবে আপনি এটি কনফিগার করতে পারেন যাতে Android সিস্টেম সমস্ত ইনপুট ইভেন্ট পরিচালনা করে, উপযুক্ত কার্যকলাপে প্রশ্নগুলি সরবরাহ করে এবং অনুসন্ধানের পরামর্শ প্রদান করে — ঠিক অনুসন্ধানের মতো ডায়ালগ

যখন ব্যবহারকারী অনুসন্ধান ডায়ালগ বা অনুসন্ধান উইজেট থেকে একটি অনুসন্ধান চালায়, তখন সিস্টেমটি একটি Intent তৈরি করে এবং এতে ব্যবহারকারীর ক্যোয়ারী সংরক্ষণ করে। তারপর সিস্টেমটি সেই কার্যকলাপ শুরু করে যা আপনি অনুসন্ধানগুলি পরিচালনা করার জন্য ঘোষণা করেন - "অনুসন্ধানযোগ্য কার্যকলাপ" - এবং এটিকে উদ্দেশ্য প্রদান করে৷ এই ধরনের সহায়ক অনুসন্ধানের জন্য আপনার অ্যাপ সেট আপ করতে, আপনার নিম্নলিখিতগুলি প্রয়োজন:

  • একটি অনুসন্ধান কনফিগারেশন
    একটি XML ফাইল যা অনুসন্ধান ডায়ালগ বা উইজেটের জন্য কিছু সেটিংস কনফিগার করে। এতে ভয়েস অনুসন্ধান, অনুসন্ধানের পরামর্শ এবং অনুসন্ধান বাক্সের জন্য ইঙ্গিত পাঠের মতো বৈশিষ্ট্যগুলির সেটিংস অন্তর্ভুক্ত রয়েছে৷
  • একটি অনুসন্ধানযোগ্য কার্যকলাপ
    Activity যা অনুসন্ধান ক্যোয়ারী গ্রহণ করে, আপনার ডেটা অনুসন্ধান করে এবং অনুসন্ধান ফলাফল প্রদর্শন করে।
  • একটি অনুসন্ধান ইন্টারফেস, নিম্নলিখিত যে কোনো একটি দ্বারা প্রদান করা হয়:
    • অনুসন্ধান ডায়ালগ
      ডিফল্টরূপে, অনুসন্ধান ডায়ালগ লুকানো হয়। যখন ব্যবহারকারী আপনার অনুসন্ধান বোতামে ট্যাপ করে আপনি onSearchRequested() কল করেন তখন এটি স্ক্রিনের শীর্ষে উপস্থিত হয়।
    • একটি SearchView উইজেট
      অনুসন্ধান উইজেট ব্যবহার করে আপনি অ্যাপ বারে অ্যাকশন ভিউ সহ আপনার কার্যকলাপের যেকোনো জায়গায় অনুসন্ধান বাক্স রাখতে পারবেন।

এই নথির বাকি অংশ আপনাকে দেখায় কিভাবে অনুসন্ধান কনফিগারেশন এবং অনুসন্ধানযোগ্য কার্যকলাপ তৈরি করতে হয় এবং অনুসন্ধান ডায়ালগ বা অনুসন্ধান উইজেটের সাথে একটি অনুসন্ধান ইন্টারফেস কীভাবে প্রয়োগ করতে হয়।

একটি অনুসন্ধানযোগ্য কনফিগারেশন তৈরি করুন

প্রথমে আপনার প্রয়োজন একটি XML ফাইল যাকে সার্চ কনফিগারেশন বলা হয়। এটি অনুসন্ধান ডায়ালগ বা উইজেটের নির্দিষ্ট UI দিকগুলি কনফিগার করে এবং পরামর্শ এবং ভয়েস অনুসন্ধানের মতো বৈশিষ্ট্যগুলি কীভাবে আচরণ করে তা সংজ্ঞায়িত করে৷ এই ফাইলটি ঐতিহ্যগতভাবে searchable.xml নামে পরিচিত এবং অবশ্যই res/xml/ প্রকল্প ডিরেক্টরিতে সংরক্ষণ করতে হবে।

অনুসন্ধান কনফিগারেশন ফাইলে অবশ্যই <searchable> উপাদানটিকে এর রুট নোড হিসাবে অন্তর্ভুক্ত করতে হবে এবং এক বা একাধিক বৈশিষ্ট্য নির্দিষ্ট করতে হবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_label"
    android:hint="@string/search_hint" >
</searchable>

android:label অ্যাট্রিবিউটই একমাত্র প্রয়োজনীয় অ্যাট্রিবিউট। এটি একটি স্ট্রিং সংস্থানকে নির্দেশ করে, যা অ্যাপের নাম হতে হবে। এই লেবেলটি ব্যবহারকারীর কাছে দৃশ্যমান হবে না যতক্ষণ না আপনি দ্রুত অনুসন্ধান বাক্সের জন্য অনুসন্ধানের পরামর্শগুলি সক্ষম করেন, যে সময়ে সিস্টেম সেটিংসে অনুসন্ধানযোগ্য আইটেমগুলির তালিকায় লেবেলটি দৃশ্যমান হয়৷

যদিও এটির প্রয়োজন নেই, আমরা সুপারিশ করি যে আপনি সর্বদা android:hint অ্যাট্রিবিউটটি অন্তর্ভুক্ত করুন, যা ব্যবহারকারীদের একটি ক্যোয়ারী প্রবেশ করার আগে অনুসন্ধান বাক্সে একটি ইঙ্গিত স্ট্রিং প্রদান করে৷ ইঙ্গিতটি গুরুত্বপূর্ণ কারণ এটি ব্যবহারকারীদের তারা কী অনুসন্ধান করতে পারে সে সম্পর্কে গুরুত্বপূর্ণ সূত্র প্রদান করে।

<searchable> উপাদানটি অন্যান্য বেশ কয়েকটি বৈশিষ্ট্য গ্রহণ করে। যাইহোক, যতক্ষণ না আপনি অনুসন্ধানের পরামর্শ এবং ভয়েস অনুসন্ধানের মতো বৈশিষ্ট্যগুলি যোগ না করেন ততক্ষণ পর্যন্ত আপনার বেশিরভাগ বৈশিষ্ট্যের প্রয়োজন নেই৷ অনুসন্ধান কনফিগারেশন ফাইল সম্পর্কে বিস্তারিত তথ্যের জন্য, অনুসন্ধান কনফিগারেশন রেফারেন্স নথি দেখুন।

একটি অনুসন্ধানযোগ্য কার্যকলাপ তৈরি করুন

একটি অনুসন্ধানযোগ্য কার্যকলাপ হল আপনার অ্যাপের Activity যা একটি ক্যোয়ারী স্ট্রিং এর উপর ভিত্তি করে অনুসন্ধানগুলি সম্পাদন করে এবং অনুসন্ধানের ফলাফলগুলি উপস্থাপন করে৷

যখন ব্যবহারকারী অনুসন্ধান ডায়ালগ বা উইজেটে একটি অনুসন্ধান চালায়, তখন সিস্টেমটি আপনার অনুসন্ধানযোগ্য কার্যকলাপ শুরু করে এবং এটিকে ACTION_SEARCH অ্যাকশনের সাথে একটি Intent অনুসন্ধান ক্যোয়ারী প্রদান করে৷ আপনার অনুসন্ধানযোগ্য কার্যকলাপ অভিপ্রায়ের অতিরিক্ত QUERY থেকে ক্যোয়ারী পুনরুদ্ধার করে, তারপর আপনার ডেটা অনুসন্ধান করে এবং ফলাফল উপস্থাপন করে।

যেহেতু আপনি আপনার অ্যাপের অন্য কোনো অ্যাক্টিভিটিতে সার্চ ডায়ালগ বা উইজেট অন্তর্ভুক্ত করতে পারেন, তাই সিস্টেমকে অবশ্যই জানতে হবে কোন অ্যাক্টিভিটি আপনার সার্চযোগ্য অ্যাক্টিভিটি যাতে এটি সঠিকভাবে সার্চ কোয়েরি ডেলিভার করতে পারে। সুতরাং, প্রথমে অ্যান্ড্রয়েড ম্যানিফেস্ট ফাইলে আপনার অনুসন্ধানযোগ্য কার্যকলাপ ঘোষণা করুন৷

একটি অনুসন্ধানযোগ্য কার্যকলাপ ঘোষণা করুন

আপনার যদি ইতিমধ্যে একটি না থাকে, তাহলে এমন একটি Activity তৈরি করুন যা অনুসন্ধানগুলি সম্পাদন করে এবং ফলাফল উপস্থাপন করে৷ আপনাকে এখনও অনুসন্ধান কার্যকারিতা বাস্তবায়ন করতে হবে না—শুধু একটি কার্যকলাপ তৈরি করুন যা আপনি ম্যানিফেস্টে ঘোষণা করতে পারেন৷ ম্যানিফেস্টের <activity> উপাদানের ভিতরে, নিম্নলিখিতগুলি করুন:

  1. একটি <intent-filter> উপাদানে ACTION_SEARCH অভিপ্রায় গ্রহণ করার কার্যকলাপ ঘোষণা করুন।
  2. একটি <meta-data> উপাদানে ব্যবহার করার জন্য অনুসন্ধান কনফিগারেশন নির্দিষ্ট করুন।

এটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

<application ... >
    <activity android:name=".SearchableActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>
    </activity>
    ...
</application>

<meta-data> উপাদানটিতে "android.app.searchable" এর মান সহ android:name বৈশিষ্ট্য এবং অনুসন্ধানযোগ্য কনফিগারেশন ফাইলের রেফারেন্স সহ android:resource বৈশিষ্ট্য অন্তর্ভুক্ত করতে হবে। পূর্ববর্তী উদাহরণে, এটি res/xml/searchable.xml ফাইলকে বোঝায়।

একটি অনুসন্ধান সঞ্চালন

আপনি ম্যানিফেস্টে আপনার অনুসন্ধানযোগ্য কার্যকলাপ ঘোষণা করার পরে, আপনার অনুসন্ধানযোগ্য কার্যকলাপে অনুসন্ধান করতে এই পদ্ধতিটি অনুসরণ করুন:

  1. প্রশ্নটি গ্রহণ করুন
  2. আপনার ডেটা অনুসন্ধান করুন
  3. ফলাফল উপস্থাপন করুন

প্রশ্নটি গ্রহণ করুন

যখন একজন ব্যবহারকারী অনুসন্ধান ডায়ালগ বা উইজেট থেকে একটি অনুসন্ধান চালায়, তখন সিস্টেমটি আপনার অনুসন্ধানযোগ্য কার্যকলাপ শুরু করে এবং এটিকে একটি ACTION_SEARCH অভিপ্রায় পাঠায়। এই অভিপ্রায়টি QUERY স্ট্রিং-এ অতিরিক্ত অনুসন্ধান ক্যোয়ারী বহন করে। যখন কার্যকলাপ শুরু হয় তখন এই উদ্দেশ্যটি পরীক্ষা করুন এবং স্ট্রিংটি বের করুন৷ উদাহরণস্বরূপ, আপনার অনুসন্ধানযোগ্য কার্যকলাপ শুরু হলে আপনি কীভাবে অনুসন্ধান ক্যোয়ারী পেতে পারেন তা এখানে রয়েছে:

কোটলিন

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.search)

    // Verify the action and get the query.
    if (Intent.ACTION_SEARCH == intent.action) {
        intent.getStringExtra(SearchManager.QUERY)?.also { query ->
            doMySearch(query)
        }
    }
}

জাভা

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search);

    // Get the intent, verify the action, and get the query.
    Intent intent = getIntent();
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
      String query = intent.getStringExtra(SearchManager.QUERY);
      doMySearch(query);
    }
}

QUERY স্ট্রিং সর্বদা ACTION_SEARCH অভিপ্রায় সহ অন্তর্ভুক্ত করা হয়৷ পূর্ববর্তী উদাহরণে, ক্যোয়ারীটি পুনরুদ্ধার করা হয় এবং একটি স্থানীয় doMySearch() পদ্ধতিতে পাঠানো হয় যেখানে প্রকৃত অনুসন্ধান অপারেশন করা হয়।

আপনার ডেটা অনুসন্ধান করুন

আপনার ডেটা সংরক্ষণ এবং অনুসন্ধান করার প্রক্রিয়াটি আপনার অ্যাপের জন্য অনন্য। আপনি অনেক উপায়ে আপনার ডেটা সঞ্চয় এবং অনুসন্ধান করতে পারেন, এবং এই নথিটি আপনাকে দেখায় না কিভাবে। আপনার প্রয়োজনীয়তা এবং আপনার ডেটা বিন্যাসের পরিপ্রেক্ষিতে আপনি কীভাবে আপনার ডেটা সংরক্ষণ এবং অনুসন্ধান করেন তা বিবেচনা করুন। নিম্নলিখিত টিপস আপনি আবেদন করতে সক্ষম হতে পারে:

  • যদি আপনার ডেটা ডিভাইসে SQLite ডাটাবেসে সংরক্ষিত থাকে, তাহলে LIKE ক্যোয়ারী না করে FTS3 ব্যবহার করে একটি ফুল-টেক্সট সার্চ করা হলে তা টেক্সট ডেটা জুড়ে আরও শক্তিশালী অনুসন্ধান প্রদান করতে পারে এবং উল্লেখযোগ্যভাবে দ্রুত ফলাফল তৈরি করতে পারে। Android এ SQLite সম্পর্কে তথ্যের জন্য FTS3 এবং SQLiteDatabase ক্লাস সম্পর্কে তথ্যের জন্য sqlite.org দেখুন।
  • যদি আপনার ডেটা অনলাইনে সংরক্ষিত থাকে, তাহলে ব্যবহারকারীর ডেটা সংযোগ দ্বারা অনুভূত অনুসন্ধান কর্মক্ষমতা বাধাগ্রস্ত হতে পারে। আপনার অনুসন্ধান ফিরে না আসা পর্যন্ত আপনি একটি অগ্রগতি সূচক প্রদর্শন করতে চাইতে পারেন। কিভাবে একটি অগ্রগতি সূচক প্রদর্শন করতে হয় সে সম্পর্কে তথ্যের জন্য নেটওয়ার্ক API এবং ProgressBar এর একটি রেফারেন্সের জন্য android.net দেখুন।

ফলাফল উপস্থাপন করুন

আপনার ডেটা কোথায় থাকে এবং আপনি কীভাবে এটি অনুসন্ধান করেন তা নির্বিশেষে, আমরা সুপারিশ করি যে আপনি একটি Adapter সাথে আপনার অনুসন্ধানযোগ্য কার্যকলাপে অনুসন্ধান ফলাফল ফিরিয়ে দিন৷ এইভাবে, আপনি একটি RecyclerView এ সমস্ত অনুসন্ধান ফলাফল উপস্থাপন করতে পারেন। যদি আপনার ডেটা SQLite ডাটাবেস কোয়েরি থেকে আসে, তাহলে আপনি একটি CursorAdapter ব্যবহার করে একটি RecyclerView এ আপনার ফলাফল প্রয়োগ করতে পারেন। যদি আপনার ডেটা একটি ভিন্ন ফর্ম্যাটে আসে, তাহলে আপনি BaseAdapter এর একটি এক্সটেনশন তৈরি করতে পারেন।

একটি Adapter প্রতিটি আইটেমকে ডেটার সেট থেকে একটি View অবজেক্টে আবদ্ধ করে। যখন Adapter একটি RecyclerView প্রয়োগ করা হয়, তখন প্রতিটি ডেটা তালিকায় একটি পৃথক ভিউ হিসাবে ঢোকানো হয়। Adapter শুধুমাত্র একটি ইন্টারফেস, তাই Cursor থেকে ডেটা বাঁধাই করার জন্য CursorAdapter মতো বাস্তবায়নের প্রয়োজন। যদি বিদ্যমান বাস্তবায়নের কোনোটিই আপনার ডেটার জন্য কাজ না করে, তাহলে আপনি BaseAdapter থেকে আপনার নিজস্ব বাস্তবায়ন করতে পারেন।

অনুসন্ধান ডায়ালগ ব্যবহার করুন

অনুসন্ধান ডায়ালগটি স্ক্রিনের শীর্ষে একটি ভাসমান অনুসন্ধান বাক্স সরবরাহ করে, বামদিকে অ্যাপ আইকন সহ। অনুসন্ধান ডায়ালগ ব্যবহারকারীর প্রকার হিসাবে অনুসন্ধানের পরামর্শ প্রদান করতে পারে। যখন ব্যবহারকারী একটি অনুসন্ধান চালায়, তখন সিস্টেম অনুসন্ধানের অনুসন্ধানকে একটি অনুসন্ধানযোগ্য কার্যকলাপে প্রেরণ করে যা অনুসন্ধানটি সম্পাদন করে।

ডিফল্টরূপে, ব্যবহারকারী এটি সক্রিয় না করা পর্যন্ত অনুসন্ধান ডায়ালগ সর্বদা লুকানো থাকে। আপনার অ্যাপ onSearchRequested() এ কল করে অনুসন্ধান ডায়ালগ সক্রিয় করতে পারে। যাইহোক, আপনি কার্যকলাপের জন্য অনুসন্ধান ডায়ালগ সক্ষম না করা পর্যন্ত এই পদ্ধতিটি কাজ করে না।

সার্চ করার জন্য সার্চ ডায়ালগ সক্ষম করতে, সিস্টেমে নির্দেশ করুন কোন সার্চযোগ্য অ্যাক্টিভিটি সার্চ ডায়ালগ থেকে সার্চ কোয়েরি গ্রহণ করবে। উদাহরণস্বরূপ, একটি অনুসন্ধানযোগ্য কার্যকলাপ তৈরি সম্পর্কে পূর্ববর্তী বিভাগে, SearchableActivity নামে একটি অনুসন্ধানযোগ্য কার্যকলাপ তৈরি করা হয়েছে। সার্চ ডায়ালগ দেখাতে এবং SearchableActivity তে সার্চ দেওয়ার জন্য আপনি যদি OtherActivity নামে একটি আলাদা অ্যাক্টিভিটি চান, তাহলে ম্যানিফেস্টে ঘোষণা করুন যে SearchableActivity হল OtherActivity সার্চ ডায়ালগ ব্যবহার করার জন্য সার্চযোগ্য অ্যাক্টিভিটি।

একটি কার্যকলাপের অনুসন্ধান ডায়ালগের জন্য অনুসন্ধানযোগ্য কার্যকলাপ ঘোষণা করতে, সংশ্লিষ্ট কার্যকলাপের <activity> অ্যাক্টিভিটি> উপাদানের ভিতরে একটি <meta-data> উপাদান যোগ করুন। <meta-data> উপাদানটিতে অবশ্যই android:value বৈশিষ্ট্য অন্তর্ভুক্ত থাকতে হবে যা অনুসন্ধানযোগ্য কার্যকলাপের শ্রেণির নাম এবং "android.app.default_searchable" এর মান সহ android:name বৈশিষ্ট্য নির্দিষ্ট করে।

উদাহরণস্বরূপ, এখানে একটি অনুসন্ধানযোগ্য কার্যকলাপ, SearchableActivity , এবং অন্য একটি কার্যকলাপ, OtherActivity উভয়ের জন্যই ঘোষণা রয়েছে, যা অনুসন্ধান ডায়ালগ থেকে সঞ্চালিত অনুসন্ধানগুলি সম্পাদন করতে SearchableActivity ব্যবহার করে:

<application ... >
    <!-- This is the searchable activity; it performs searches. -->
    <activity android:name=".SearchableActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>
    </activity>

    <!-- This activity enables the search dialog to initiate searches
         in the SearchableActivity. -->
    <activity android:name=".OtherActivity" ... >
        <!-- Enable the search dialog to send searches to SearchableActivity. -->
        <meta-data android:name="android.app.default_searchable"
                   android:value=".SearchableActivity" />
    </activity>
    ...
</application>

যেহেতু OtherActivity এখন একটি <meta-data> উপাদান রয়েছে যা সার্চের জন্য কোন সার্চযোগ্য অ্যাক্টিভিটি ব্যবহার করতে হবে তা ঘোষণা করার জন্য, অ্যাক্টিভিটি সার্চ ডায়ালগকে সক্ষম করে। যদিও ব্যবহারকারী এই ক্রিয়াকলাপে রয়েছেন, তবে onSearchRequested() পদ্ধতি অনুসন্ধান ডায়ালগ সক্রিয় করে। যখন ব্যবহারকারী অনুসন্ধানটি চালায়, তখন সিস্টেম SearchableActivity শুরু করে এবং এটিকে ACTION_SEARCH অভিপ্রায় প্রদান করে।

আপনি যদি চান যে আপনার অ্যাপের প্রতিটি অ্যাক্টিভিটি সার্চ ডায়ালগ প্রদান করুক, তাহলে প্রতিটি <activity> এর পরিবর্তে <application> এলিমেন্টের চাইল্ড হিসেবে পূর্ববর্তী <meta-data> উপাদানটি সন্নিবেশ করুন। এইভাবে, প্রতিটি কার্যকলাপ মান উত্তরাধিকারসূত্রে পায়, অনুসন্ধান ডায়ালগ প্রদান করে এবং একই অনুসন্ধানযোগ্য কার্যকলাপে অনুসন্ধানগুলি সরবরাহ করে। আপনার যদি একাধিক অনুসন্ধানযোগ্য ক্রিয়াকলাপ থাকে, আপনি পৃথক কার্যকলাপের মধ্যে একটি ভিন্ন <meta-data> ঘোষণা স্থাপন করে ডিফল্ট অনুসন্ধানযোগ্য কার্যকলাপ ওভাররাইড করতে পারেন।

আপনার ক্রিয়াকলাপগুলির জন্য এখন অনুসন্ধান ডায়ালগ সক্ষম করার সাথে, আপনার অ্যাপটি অনুসন্ধানগুলি সম্পাদন করার জন্য প্রস্তুত৷

অনুসন্ধান ডায়ালগ আহ্বান করুন

যদিও কিছু ডিভাইস একটি ডেডিকেটেড সার্চ বোতাম প্রদান করে, বোতামের আচরণ ডিভাইসের মধ্যে পরিবর্তিত হতে পারে এবং অনেক ডিভাইসই সার্চ বোতাম প্রদান করে না। তাই অনুসন্ধান ডায়ালগ ব্যবহার করার সময়, আপনাকে অবশ্যই আপনার UI-তে একটি অনুসন্ধান বোতাম প্রদান করতে হবে যা onSearchRequested() এ কল করে অনুসন্ধান ডায়ালগ সক্রিয় করে।

উদাহরণস্বরূপ, আপনার বিকল্প মেনু বা UI লেআউটে একটি অনুসন্ধান বোতাম যোগ করুন যা onSearchRequested() কল করে।

আপনি "টাইপ-টু-সার্চ" কার্যকারিতাও সক্ষম করতে পারেন, যা ব্যবহারকারী কীবোর্ডে টাইপ করা শুরু করলে অনুসন্ধান ডায়ালগ সক্রিয় করে। অনুসন্ধান ডায়ালগে কীস্ট্রোক ঢোকানো হয়। আপনি আপনার কার্যকলাপের onCreate() পদ্ধতিতে setDefaultKeyMode — অথবা DEFAULT_KEYS_SEARCH_LOCAL — কল করে আপনার কার্যকলাপে টাইপ-টু-সার্চ সক্ষম করতে পারেন৷

আপনার অ্যাক্টিভিটি লাইফ সাইকেলে সার্চ ডায়ালগের প্রভাব

অনুসন্ধান ডায়ালগ হল একটি Dialog যা স্ক্রিনের শীর্ষে ভাসছে। এটি অ্যাক্টিভিটি স্ট্যাকের কোনো পরিবর্তন ঘটায় না, তাই যখন সার্চ ডায়ালগ দেখা যায়, কোনো লাইফসাইকেল পদ্ধতি-যেমন onPause() — বলা হয় না। আপনার কার্যকলাপ ইনপুট ফোকাস হারায়, কারণ ইনপুট ফোকাস অনুসন্ধান ডায়ালগ দেওয়া হয়.

সার্চ ডায়ালগ অ্যাক্টিভ হলে আপনি যদি বিজ্ঞপ্তি পেতে চান, onSearchRequested() পদ্ধতিটি ওভাররাইড করুন। যখন সিস্টেম এই পদ্ধতিটিকে কল করে, এটি একটি ইঙ্গিত যে আপনার কার্যকলাপ অনুসন্ধান ডায়ালগে ইনপুট ফোকাস হারায়, তাই আপনি ইভেন্টের জন্য উপযুক্ত যেকোন কাজ করতে পারেন, যেমন একটি গেম বিরতি দেওয়া৷ যতক্ষণ না আপনি অনুসন্ধানের প্রসঙ্গ ডেটা পাস করছেন — এই নথির অন্য বিভাগে আলোচনা করা হয়েছে — সুপারক্লাস বাস্তবায়ন কল করে পদ্ধতিটি শেষ করুন:

কোটলিন

override fun onSearchRequested(): Boolean {
    pauseSomeStuff()
    return super.onSearchRequested()
}

জাভা

@Override
public boolean onSearchRequested() {
    pauseSomeStuff();
    return super.onSearchRequested();
}

যদি ব্যবহারকারী ব্যাক বোতামে ট্যাপ করে অনুসন্ধান বাতিল করে, অনুসন্ধান ডায়ালগ বন্ধ হয়ে যায় এবং কার্যকলাপ ইনপুট ফোকাস পুনরুদ্ধার করে। setOnDismissListener() , setOnCancelListener() বা উভয়ের সাথে অনুসন্ধান ডায়ালগ বন্ধ হয়ে গেলে আপনি বিজ্ঞপ্তি পাওয়ার জন্য নিবন্ধন করতে পারেন৷ আপনাকে শুধুমাত্র OnDismissListener নিবন্ধন করতে হবে, কারণ এটি প্রতিবার অনুসন্ধান ডায়ালগ বন্ধ হলে কল করা হয়। OnCancelListener শুধুমাত্র ইভেন্টগুলির সাথে সম্পর্কিত যেখানে ব্যবহারকারী স্পষ্টভাবে অনুসন্ধান ডায়ালগ থেকে প্রস্থান করে, তাই যখন একটি অনুসন্ধান চালানো হয় তখন এটি বলা হয় না। যখন অনুসন্ধান চালানো হয়, অনুসন্ধান ডায়ালগ স্বয়ংক্রিয়ভাবে অদৃশ্য হয়ে যায়।

যদি বর্তমান ক্রিয়াকলাপটি অনুসন্ধানযোগ্য কার্যকলাপ না হয়, তবে ব্যবহারকারী যখন একটি অনুসন্ধান চালায় তখন স্বাভাবিক কার্যকলাপের জীবনচক্র ইভেন্টগুলি ট্রিগার হয়—বর্তমান কার্যকলাপ onPause() পায়, যেমনটি কার্যক্রমের ভূমিকায় বর্ণিত হয়েছে। যাইহোক, যদি বর্তমান কার্যকলাপটি অনুসন্ধানযোগ্য কার্যকলাপ হয়, তাহলে দুটি জিনিসের মধ্যে একটি ঘটবে:

  • ডিফল্টরূপে, অনুসন্ধানযোগ্য ক্রিয়াকলাপটি onCreate() এ একটি কল সহ ACTION_SEARCH অভিপ্রায় গ্রহণ করে, এবং কার্যকলাপের একটি নতুন উদাহরণ কার্যকলাপ স্ট্যাকের শীর্ষে আনা হয়৷ অ্যাক্টিভিটি স্ট্যাকে আপনার সার্চযোগ্য অ্যাক্টিভিটির দুটি দৃষ্টান্ত রয়েছে, তাই ব্যাক বোতামে ট্যাপ করা আপনাকে সার্চযোগ্য অ্যাক্টিভিটি থেকে বেরিয়ে যাওয়ার পরিবর্তে সার্চযোগ্য অ্যাক্টিভিটির আগের ইন্সট্যান্সে নিয়ে যাবে।
  • আপনি যদি android:launchMode কে "singleTop" -এ সেট করেন, তাহলে অনুসন্ধানযোগ্য কার্যকলাপটি নতুন ACTION_SEARCH অভিপ্রায় পাস করে, onNewIntent(Intent) এ একটি কল সহ ACTION_SEARCH অভিপ্রায় গ্রহণ করে। উদাহরণস্বরূপ, এখানে আপনি এই ক্ষেত্রে কীভাবে পরিচালনা করতে পারেন, যেখানে অনুসন্ধানযোগ্য কার্যকলাপের লঞ্চ মোড হল "singleTop" :

    কোটলিন

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.search)
        handleIntent(intent)
    }
    
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        setIntent(intent)
        handleIntent(intent)
    }
    
    private fun handleIntent(intent: Intent) {
        if (Intent.ACTION_SEARCH == intent.action) {
            intent.getStringExtra(SearchManager.QUERY)?.also { query ->
                doMySearch(query)
            }
        }
    }

    জাভা

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search);
        handleIntent(getIntent());
    }
    
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        handleIntent(intent);
    }
    
    private void handleIntent(Intent intent) {
        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
          String query = intent.getStringExtra(SearchManager.QUERY);
          doMySearch(query);
        }
    }

    একটি অনুসন্ধান সম্পাদন করার বিষয়ে বিভাগে উদাহরণ কোডের তুলনায়, অনুসন্ধানের উদ্দেশ্য পরিচালনা করার জন্য সমস্ত কোড এখন handleIntent() পদ্ধতিতে রয়েছে, যাতে onCreate() এবং onNewIntent() উভয়ই এটি কার্যকর করতে পারে।

    যখন সিস্টেমটি onNewIntent(Intent) কল করে, তখন কার্যকলাপটি পুনরায় আরম্ভ করা হয় না, তাই getIntent() পদ্ধতিটি একই অভিপ্রায় ফিরিয়ে দেয় যা onCreate() এর সাথে প্রাপ্ত হয়। এই কারণেই আপনাকে অবশ্যই onNewIntent(Intent) setIntent(Intent) Intent) কল করতে হবে : যাতে আপনি ভবিষ্যতে getIntent() কল করলে কার্যকলাপের দ্বারা সংরক্ষিত অভিপ্রায় আপডেট হয়।

দ্বিতীয় দৃশ্যকল্প, "singleTop" লঞ্চ মোড ব্যবহার করে, সাধারণত বাঞ্ছনীয়, কারণ একটি অনুসন্ধান সম্পন্ন হওয়ার পরে, ব্যবহারকারী অতিরিক্ত অনুসন্ধানগুলি সম্পাদন করতে পারে এবং আপনি চান না যে আপনার অ্যাপটি অনুসন্ধানযোগ্য কার্যকলাপের একাধিক দৃষ্টান্ত তৈরি করুক। আমরা সুপারিশ করছি যে আপনি আপনার অনুসন্ধানযোগ্য কার্যকলাপ অ্যাপ ম্যানিফেস্টে "singleTop" লঞ্চ মোডে সেট করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

<activity android:name=".SearchableActivity"
          android:launchMode="singleTop" >
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>
    <meta-data
          android:name="android.app.searchable"
          android:resource="@xml/searchable"/>
  </activity>

সার্চ প্রসঙ্গ ডেটা পাস করুন

কিছু ক্ষেত্রে, আপনি প্রতিটি অনুসন্ধানের জন্য অনুসন্ধানযোগ্য কার্যকলাপের ভিতরে অনুসন্ধান ক্যোয়ারীতে প্রয়োজনীয় পরিমার্জন করতে পারেন। যাইহোক, ব্যবহারকারী যে ক্রিয়াকলাপ থেকে অনুসন্ধান করছেন তার উপর ভিত্তি করে আপনি যদি আপনার অনুসন্ধানের মানদণ্ড পরিমার্জন করতে চান তবে সিস্টেমটি আপনার অনুসন্ধানযোগ্য কার্যকলাপে যে অভিপ্রায় পাঠায় তাতে আপনি অতিরিক্ত ডেটা সরবরাহ করতে পারেন। আপনি APP_DATA Bundle অতিরিক্ত ডেটা পাস করতে পারেন, যা ACTION_SEARCH অভিপ্রায়ে অন্তর্ভুক্ত।

আপনার অনুসন্ধানযোগ্য ক্রিয়াকলাপে এই ধরণের ডেটা প্রেরণ করতে, ব্যবহারকারীর অনুসন্ধান করতে পারে এমন কার্যকলাপের জন্য onSearchRequested() পদ্ধতিটি ওভাররাইড করুন, অতিরিক্ত ডেটা সহ একটি Bundle তৈরি করুন এবং অনুসন্ধান ডায়ালগ সক্রিয় করতে startSearch() কল করুন৷ যেমন:

কোটলিন

override fun onSearchRequested(): Boolean {
    val appData = Bundle().apply {
        putBoolean(JARGON, true)
    }
    startSearch(null, false, appData, false)
    return true
}

জাভা

@Override
public boolean onSearchRequested() {
     Bundle appData = new Bundle();
     appData.putBoolean(SearchableActivity.JARGON, true);
     startSearch(null, false, appData, false);
     return true;
 }

সত্য প্রত্যাবর্তন নির্দেশ করে যে আপনি সফলভাবে এই কলব্যাক ইভেন্টটি পরিচালনা করেছেন এবং অনুসন্ধান ডায়ালগ সক্রিয় করতে startSearch() কল করেছেন৷ ব্যবহারকারী একটি প্রশ্ন জমা দেওয়ার পরে, এটি আপনার যোগ করা ডেটা সহ আপনার অনুসন্ধানযোগ্য কার্যকলাপে বিতরণ করা হয়। আপনি অনুসন্ধানটি পরিমার্জিত করতে APP_DATA Bundle থেকে অতিরিক্ত ডেটা বের করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

কোটলিন

val jargon: Boolean = intent.getBundleExtra(SearchManager.APP_DATA)?.getBoolean(JARGON) ?: false

জাভা

Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA);
if (appData != null) {
    boolean jargon = appData.getBoolean(SearchableActivity.JARGON);
}

অনুসন্ধান উইজেট ব্যবহার করুন

অ্যাপের শীর্ষ বারে একটি সার্চ ভিউ দেখানো একটি ছবি

চিত্র 1. অ্যাপ বারে একটি অ্যাকশন ভিউ হিসাবে SearchView উইজেট।

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

অনুসন্ধান উইজেট কনফিগার করুন

আপনি একটি অনুসন্ধান কনফিগারেশন এবং একটি অনুসন্ধানযোগ্য কার্যকলাপ তৈরি করার পরে, setSearchableInfo() কল করে এবং আপনার অনুসন্ধানযোগ্য কনফিগারেশনের প্রতিনিধিত্ব করে এমন SearchableInfo অবজেক্টটি পাস করে প্রতিটি SearchView জন্য সহায়ক অনুসন্ধান সক্ষম করুন।

আপনি SearchManagergetSearchableInfo() কল করে SearchableInfo এর একটি রেফারেন্স পেতে পারেন।

উদাহরণস্বরূপ, আপনি যদি অ্যাপ বারে একটি অ্যাকশন ভিউ হিসাবে একটি অনুসন্ধান SearchView ব্যবহার করেন, onCreateOptionsMenu() কলব্যাকের সময় উইজেটটি সক্ষম করুন, নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

কোটলিন

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    // Inflate the options menu from XML.
    val inflater = menuInflater
    inflater.inflate(R.menu.options_menu, menu)

    // Get the SearchView and set the searchable configuration.
    val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
    (menu.findItem(R.id.menu_search).actionView as SearchView).apply {
        // Assumes current activity is the searchable activity.
        setSearchableInfo(searchManager.getSearchableInfo(componentName))
        setIconifiedByDefault(false) // Don't iconify the widget. Expand it by default.
    }

    return true
}

জাভা

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the options menu from XML.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);

    // Get the SearchView and set the searchable configuration.
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    // Assumes current activity is the searchable activity.
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconifiedByDefault(false); // Don't iconify the widget. Expand it by default.

    return true;
}

অনুসন্ধান উইজেটটি এখন কনফিগার করা হয়েছে, এবং সিস্টেমটি আপনার অনুসন্ধানযোগ্য কার্যকলাপে অনুসন্ধানের প্রশ্নগুলি সরবরাহ করে৷ আপনি অনুসন্ধান উইজেটের জন্য অনুসন্ধানের পরামর্শগুলিও সক্ষম করতে পারেন৷

অ্যাপ বারে অ্যাকশন ভিউ সম্পর্কে আরও তথ্যের জন্য, অ্যাকশন ভিউ এবং অ্যাকশন প্রোভাইডার ব্যবহার করুন দেখুন।

অন্যান্য অনুসন্ধান উইজেট বৈশিষ্ট্য

SearchView উইজেট কিছু অতিরিক্ত বৈশিষ্ট্য প্রদান করে যা আপনি চাইতে পারেন:

একটি জমা বোতাম
ডিফল্টরূপে, একটি অনুসন্ধান ক্যোয়ারী জমা দেওয়ার জন্য কোন বোতাম নেই, তাই ব্যবহারকারীকে অনুসন্ধান শুরু করতে কীবোর্ডে রিটার্ন কী টিপতে হবে। আপনি setSubmitButtonEnabled(true) কল করে একটি "জমা দিন" বোতাম যোগ করতে পারেন।
অনুসন্ধান পরামর্শের জন্য অনুসন্ধানের পরিমার্জন
আপনি যখন অনুসন্ধানের পরামর্শগুলি সক্ষম করেন, তখন আপনি সাধারণত ব্যবহারকারীদের একটি পরামর্শ নির্বাচন করার আশা করেন, তবে তারা প্রস্তাবিত অনুসন্ধান ক্যোয়ারীটিও পরিমার্জন করতে চাইতে পারে। আপনি প্রতিটি পরামর্শের পাশে একটি বোতাম যোগ করতে পারেন যা setQueryRefinementEnabled(true) কল করে ব্যবহারকারীর দ্বারা পরিমার্জনের জন্য অনুসন্ধান বাক্সে প্রস্তাবনাটি সন্নিবেশ করায়।
সার্চ বক্সের দৃশ্যমানতা টগল করার ক্ষমতা
ডিফল্টরূপে, অনুসন্ধান উইজেটটি "আইকনিফাইড" হয়, যার অর্থ এটি শুধুমাত্র একটি অনুসন্ধান আইকন - একটি বিবর্ধক গ্লাস দ্বারা প্রতিনিধিত্ব করা হয়৷ ব্যবহারকারী আইকনে ট্যাপ করলে সার্চ বক্স দেখানোর জন্য এটি প্রসারিত হয়। পূর্ববর্তী উদাহরণে দেখানো হয়েছে, আপনি setIconifiedByDefault(false) কল করে ডিফল্টভাবে অনুসন্ধান বাক্সটি দেখাতে পারেন। আপনি setIconified() এ কল করে অনুসন্ধান উইজেটের উপস্থিতি টগল করতে পারেন।

SearchView ক্লাসে আরও বেশ কিছু API আছে যা আপনাকে সার্চ উইজেট কাস্টমাইজ করতে দেয়। যাইহোক, সার্চ ক্যোয়ারী এবং ডিসপ্লে সার্চ সাজেশন দিতে অ্যান্ড্রয়েড সিস্টেম ব্যবহার করার পরিবর্তে, আপনি যখন সমস্ত ব্যবহারকারীর ইনপুট নিজেই পরিচালনা করেন তখনই তাদের বেশিরভাগ ব্যবহার করা হয়।

উইজেট এবং ডায়ালগ উভয়ই ব্যবহার করুন

আপনি যদি অ্যাপ বারে সার্চ উইজেটটি অ্যাকশন ভিউ হিসেবে ঢোকান এবং রুম থাকলে অ্যাপ বারে প্রদর্শিত হতে সক্ষম করেন — android:showAsAction="ifRoom" সেট করে — তাহলে সার্চ উইজেটটি অ্যাকশন ভিউ হিসেবে নাও দেখা যেতে পারে। পরিবর্তে, ওভারফ্লো মেনুতে একটি মেনু আইটেম প্রদর্শিত হতে পারে। উদাহরণস্বরূপ, যখন আপনার অ্যাপটি একটি ছোট স্ক্রিনে চলে, তখন অন্যান্য অ্যাকশন আইটেম বা নেভিগেশন উপাদানগুলির সাথে অনুসন্ধান উইজেট প্রদর্শন করার জন্য অ্যাপ বারে পর্যাপ্ত জায়গা নাও থাকতে পারে, তাই মেনু আইটেমটি পরিবর্তে ওভারফ্লো মেনুতে প্রদর্শিত হবে। ওভারফ্লো মেনুতে রাখা হলে, আইটেমটি একটি সাধারণ মেনু আইটেমের মতো কাজ করে এবং অ্যাকশন ভিউ প্রদর্শন করে না—অর্থাৎ অনুসন্ধান উইজেট।

এই পরিস্থিতি মোকাবেলা করার জন্য, আপনি যে মেনু আইটেমটিতে অনুসন্ধান উইজেট সংযুক্ত করবেন সেটিকে অবশ্যই অনুসন্ধান ডায়ালগ সক্রিয় করতে হবে যখন ব্যবহারকারী এটিকে ওভারফ্লো মেনু থেকে নির্বাচন করেন। এটি ঘটানোর জন্য, "অনুসন্ধান" মেনু আইটেমটি পরিচালনা করতে onOptionsItemSelected() প্রয়োগ করুন এবং onSearchRequested() কল করে অনুসন্ধান ডায়ালগ খুলুন।

অ্যাপ বারে আইটেমগুলি কীভাবে কাজ করে এবং কীভাবে এই পরিস্থিতি পরিচালনা করতে হয় সে সম্পর্কে আরও তথ্যের জন্য, অ্যাপ বার যুক্ত করুন দেখুন।

ভয়েস অনুসন্ধান যোগ করুন

আপনি আপনার অনুসন্ধানযোগ্য কনফিগারেশনে android:voiceSearchMode বৈশিষ্ট্য যোগ করে আপনার অনুসন্ধান ডায়ালগ বা উইজেটে ভয়েস অনুসন্ধান কার্যকারিতা যোগ করতে পারেন। এটি একটি ভয়েস অনুসন্ধান বোতাম যুক্ত করে যা একটি ভয়েস প্রম্পট চালু করে। ব্যবহারকারীর কথা বলা শেষ হলে, প্রতিলিপিকৃত অনুসন্ধান ক্যোয়ারী আপনার অনুসন্ধানযোগ্য কার্যকলাপে পাঠানো হয়।

এটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/search_label"
    android:hint="@string/search_hint"
    android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" >
</searchable>

ভয়েস অনুসন্ধান সক্ষম করার জন্য showVoiceSearchButton মান প্রয়োজন৷ দ্বিতীয় মান, launchRecognizer , নির্দিষ্ট করে যে ভয়েস অনুসন্ধান বোতামটি অবশ্যই একটি সনাক্তকারী চালু করবে যা অনুসন্ধানযোগ্য কার্যকলাপে প্রতিলিপিকৃত পাঠ্য ফিরিয়ে দেয়।

আপনি ভয়েস অনুসন্ধান আচরণ নির্দিষ্ট করতে অতিরিক্ত বৈশিষ্ট্য প্রদান করতে পারেন, যেমন প্রত্যাশিত ভাষা এবং ফলাফলের সর্বাধিক সংখ্যা। উপলব্ধ বৈশিষ্ট্য সম্পর্কে আরও তথ্যের জন্য অনুসন্ধান কনফিগারেশন রেফারেন্স দেখুন।

অনুসন্ধান পরামর্শ যোগ করুন

অনুসন্ধান ডায়ালগ এবং অনুসন্ধান উইজেট উভয়ই অ্যান্ড্রয়েড সিস্টেমের সহায়তায় ব্যবহারকারীর প্রকার হিসাবে অনুসন্ধানের পরামর্শ প্রদান করতে পারে। সিস্টেমটি পরামর্শের তালিকা পরিচালনা করে এবং ব্যবহারকারী যখন একটি পরামর্শ নির্বাচন করে তখন ইভেন্ট পরিচালনা করে।

আপনি দুটি ধরণের অনুসন্ধান পরামর্শ প্রদান করতে পারেন:

সাম্প্রতিক ক্যোয়ারী অনুসন্ধান পরামর্শ
এই পরামর্শগুলি এমন শব্দ যা ব্যবহারকারী আগে আপনার অ্যাপে অনুসন্ধান ক্যোয়ারী হিসাবে ব্যবহার করেছিলেন। আরও তথ্যের জন্য কাস্টম অনুসন্ধান পরামর্শ যোগ করুন দেখুন।
কাস্টম অনুসন্ধান পরামর্শ
এইগুলি হল অনুসন্ধানের পরামর্শ যা আপনি আপনার নিজস্ব ডেটা উৎস থেকে প্রদান করেন যাতে ব্যবহারকারীরা অবিলম্বে সঠিক বানান বা আইটেমটি যে তারা অনুসন্ধান করছেন তা নির্বাচন করতে সহায়তা করে৷ আরও তথ্যের জন্য কাস্টম অনুসন্ধান পরামর্শ যোগ করুন দেখুন।