Android 6.0 Marshmallow ব্যবহারকারীদের জন্য Google Assistant- এর মতো সহকারী অ্যাপের মাধ্যমে অ্যাপের সাথে যুক্ত হওয়ার একটি নতুন উপায় প্রবর্তন করেছে। সহকারী একটি শীর্ষ-স্তরের উইন্ডো যা ব্যবহারকারীরা বর্তমান কার্যকলাপের জন্য প্রাসঙ্গিকভাবে প্রাসঙ্গিক ক্রিয়াগুলি পেতে দেখতে পারেন৷ এই অ্যাকশনগুলিতে ডিভাইসের অন্যান্য অ্যাপের গভীর লিঙ্ক থাকতে পারে।
ব্যবহারকারীরা হোম বোতামে দীর্ঘক্ষণ প্রেস করে বা একটি কীফ্রেজ বলে সহকারীকে সক্রিয় করে। প্রতিক্রিয়া হিসাবে, সিস্টেমটি একটি শীর্ষ-স্তরের উইন্ডো খোলে যা প্রাসঙ্গিকভাবে প্রাসঙ্গিক ক্রিয়া প্রদর্শন করে।
Google অ্যাসিস্ট্যান্টের মতো একটি সহকারী অ্যাপ, Now on Tap নামক একটি বৈশিষ্ট্যের মাধ্যমে সহকারী ওভারলে উইন্ডোটি প্রয়োগ করে, যা অ্যান্ড্রয়েড প্ল্যাটফর্ম-স্তরের কার্যকারিতার সাথে কাজ করে। সিস্টেমটি ব্যবহারকারীকে একটি সহকারী অ্যাপ নির্বাচন করার অনুমতি দেয়, যা Android এর সহায়তা API ব্যবহার করে আপনার অ্যাপ থেকে প্রাসঙ্গিক তথ্য প্রাপ্ত করে।
এই নির্দেশিকাটি ব্যাখ্যা করে যে কীভাবে Android অ্যাপগুলি সহকারী ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে Android-এর সহায়তা API ব্যবহার করে। কিভাবে একটি মিডিয়া অ্যাপ তৈরি করতে হয় যাতে সহকারী লঞ্চ এবং নিয়ন্ত্রণ করতে পারে তা জানতে, Google সহকারী এবং মিডিয়া অ্যাপগুলি দেখুন।
সহকারী ব্যবহার করা
চিত্র 1 সহকারীর সাথে একটি সাধারণ ব্যবহারকারীর মিথস্ক্রিয়াকে চিত্রিত করে। যখন ব্যবহারকারী হোম বোতামটি দীর্ঘক্ষণ চাপ দেয়, তখন উত্স অ্যাপে সহায়তা API কলব্যাকগুলি আহ্বান করা হয় (ধাপ 1)। সহকারী ওভারলে উইন্ডো রেন্ডার করে (ধাপ 2 এবং 3), এবং তারপর ব্যবহারকারী সম্পাদন করার জন্য ক্রিয়াটি নির্বাচন করে। সহকারী নির্বাচিত ক্রিয়া সম্পাদন করে, যেমন ( গন্তব্য ) রেস্তোরাঁ অ্যাপের (ধাপ 4) একটি গভীর লিঙ্ক সহ একটি অভিপ্রায় গুলি করা।
ব্যবহারকারীরা সেটিংস > অ্যাপস > ডিফল্ট অ্যাপস > অ্যাসিস্ট এবং ভয়েস ইনপুট নির্বাচন করে সহকারীকে কনফিগার করতে পারেন। ব্যবহারকারীরা সিস্টেমের বিকল্পগুলি পরিবর্তন করতে পারে যেমন স্ক্রীনের বিষয়বস্তু পাঠ্য হিসাবে অ্যাক্সেস করা এবং একটি স্ক্রিনশট অ্যাক্সেস করা, যেমন চিত্র 2 এ দেখানো হয়েছে।
উৎস অ্যাপ
ব্যবহারকারীর তথ্যের উৎস হিসেবে আপনার অ্যাপ সহকারীর সাথে কাজ করে তা নিশ্চিত করতে, আপনাকে শুধুমাত্র অ্যাক্সেসযোগ্যতার সেরা অনুশীলনগুলি অনুসরণ করতে হবে। এই বিভাগটি বর্ণনা করে যে কীভাবে সহকারী ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে সাহায্য করার জন্য অতিরিক্ত তথ্য প্রদান করতে হয় সেইসাথে বিশেষ হ্যান্ডলিং প্রয়োজন, যেমন কাস্টম ভিউ।
সহকারীর সাথে অতিরিক্ত তথ্য শেয়ার করুন
টেক্সট এবং স্ক্রিনশট ছাড়াও, আপনার অ্যাপ সহকারীর সাথে অন্যান্য তথ্য শেয়ার করতে পারে। উদাহরণস্বরূপ, আপনার মিউজিক অ্যাপ বর্তমান অ্যালবামের তথ্য পাস করার জন্য বেছে নিতে পারে যাতে সহকারী বর্তমান ক্রিয়াকলাপের সাথে মানানসই বুদ্ধিমান অ্যাকশনের পরামর্শ দিতে পারে। মনে রাখবেন যে Assist APIগুলি মিডিয়া নিয়ন্ত্রণ প্রদান করে না। মিডিয়া কন্ট্রোল যোগ করতে Google Assistant এবং মিডিয়া অ্যাপ দেখুন।
সহকারীকে অতিরিক্ত তথ্য প্রদান করতে, আপনার অ্যাপটি একটি অ্যাপ লিসেনার নিবন্ধন করে বিশ্বব্যাপী অ্যাপ্লিকেশন প্রসঙ্গ প্রদান করে এবং চিত্র 3-তে দেখানো কার্যকলাপ কলব্যাকের সাথে কার্যকলাপ-নির্দিষ্ট তথ্য সরবরাহ করে:
বিশ্বব্যাপী অ্যাপ্লিকেশন প্রসঙ্গ প্রদান করতে, অ্যাপটি Application.OnProvideAssistDataListener
এর একটি বাস্তবায়ন তৈরি করে এবং registerOnProvideAssistDataListener()
ব্যবহার করে এটি নিবন্ধন করে। ক্রিয়াকলাপ-নির্দিষ্ট প্রাসঙ্গিক তথ্য প্রদান করতে, ক্রিয়াকলাপটি onProvideAssistData()
এবং onProvideAssistContent()
ওভাররাইড করে। ঐচ্ছিক গ্লোবাল কলব্যাক আহ্বান করার পরে দুটি কার্যকলাপ পদ্ধতি বলা হয়। যেহেতু কলব্যাকগুলি মূল থ্রেডে কার্যকর হয়, সেগুলি অবিলম্বে সম্পূর্ণ করা উচিত৷ কলব্যাকগুলি শুধুমাত্র তখনই আহ্বান করা হয় যখন কার্যকলাপ চলছে ৷
প্রসঙ্গ প্রদান
ব্যবহারকারী যখন সহকারীকে সক্রিয় করে, onProvideAssistData()
কে বলা হয় একটি সম্পূর্ণ ACTION_ASSIST
অভিপ্রায় তৈরি করার জন্য যা বর্তমান অ্যাপ্লিকেশনটির সমস্ত প্রসঙ্গ সহ AssistStructure
এর উদাহরণ হিসাবে উপস্থাপিত হয়। সহায়তার অভিপ্রায়ের EXTRA_ASSIST_CONTEXT
অংশে উপস্থিত হওয়ার জন্য বান্ডেলে আপনার পছন্দের যেকোনো কিছু রাখতে আপনি এই পদ্ধতিটি ওভাররাইড করতে পারেন৷
বিষয়বস্তু বর্ণনা
আপনার অ্যাপটি বর্তমান কার্যকলাপের সাথে সম্পর্কিত বিষয়বস্তু-সম্পর্কিত রেফারেন্স প্রদান করে সহকারী ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে onProvideAssistContent()
প্রয়োগ করতে পারে। আপনি একটি JSON-LD অবজেক্টের মাধ্যমে Schema.org দ্বারা সংজ্ঞায়িত সাধারণ শব্দভান্ডার ব্যবহার করে অ্যাপের বিষয়বস্তু বর্ণনা করতে পারেন। নীচের উদাহরণে, ব্যবহারকারী বর্তমানে যে মিউজিক অ্যালবামটি দেখছেন তা বর্ণনা করতে একটি মিউজিক অ্যাপ স্ট্রাকচার্ড ডেটা প্রদান করে:
কোটলিন
override fun onProvideAssistContent(assistContent: AssistContent) { super.onProvideAssistContent(assistContent) val structuredJson: String = JSONObject() .put("@type", "MusicRecording") .put("@id", "https://example.com/music/recording") .put("name", "Album Title") .toString() assistContent.structuredData = structuredJson }
জাভা
@Override public void onProvideAssistContent(AssistContent assistContent) { super.onProvideAssistContent(assistContent); String structuredJson = new JSONObject() .put("@type", "MusicRecording") .put("@id", "https://example.com/music/recording") .put("name", "Album Title") .toString(); assistContent.setStructuredData(structuredJson); }
আপনি onProvideAssistContent()
এর কাস্টম বাস্তবায়নের মাধ্যমে ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারেন, যা নিম্নলিখিত সুবিধাগুলি প্রদান করতে পারে:
- ক্রিয়াকলাপের শীর্ষ-স্তরের প্রসঙ্গকে আরও ভালভাবে প্রতিফলিত করতে প্রদত্ত সামগ্রীর অভিপ্রায় সামঞ্জস্য করে ।
- প্রদর্শিত বিষয়বস্তুর URI সরবরাহ করে ।
- ব্যবহারকারী বর্তমানে যে আগ্রহের অতিরিক্ত সামগ্রী দেখছেন তাতে
setClipData()
পূরণ করে।
দ্রষ্টব্য: যে অ্যাপগুলি একটি কাস্টম পাঠ্য নির্বাচন বাস্তবায়ন ব্যবহার করে তাদের সম্ভবত onProvideAssistContent()
এবং কল setClipData()
প্রয়োগ করতে হবে।
ডিফল্ট বাস্তবায়ন
যদি onProvideAssistData()
বা onProvideAssistContent()
কলব্যাক প্রয়োগ করা না হয়, তবে সিস্টেমটি এখনও এগিয়ে যায় এবং স্বয়ংক্রিয়ভাবে সংগৃহীত তথ্য সহকারীকে প্রেরণ করে যদি না বর্তমান উইন্ডোটিকে নিরাপদ হিসাবে পতাকাঙ্কিত করা হয়। চিত্র 3 এ দেখানো হয়েছে, সিস্টেমটি পাঠ্য সংগ্রহ করতে এবং শ্রেণিবিন্যাসের তথ্য দেখতে onProvideStructure()
এবং onProvideVirtualStructure()
এর ডিফল্ট বাস্তবায়ন ব্যবহার করে। যদি আপনার ভিউ কাস্টম টেক্সট অঙ্কন প্রয়োগ করে, setText(CharSequence)
কল করে ব্যবহারকারীকে দেখানো পাঠ্য সহ সহকারীকে প্রদান করতে onProvideStructure()
ওভাররাইড করুন।
বেশিরভাগ ক্ষেত্রে, অ্যাক্সেসিবিলিটি সমর্থন বাস্তবায়ন সহকারীকে তার প্রয়োজনীয় তথ্য পেতে সক্ষম করে। অ্যাক্সেসিবিলিটি সমর্থন বাস্তবায়ন করতে, নিম্নলিখিত সহ অ্যাপ্লিকেশনগুলিকে অ্যাক্সেসযোগ্য করাতে বর্ণিত সেরা অনুশীলনগুলি পর্যবেক্ষণ করুন:
-
android:contentDescription
বৈশিষ্ট্যগুলি প্রদান করুন। - কাস্টম দৃশ্যের জন্য
AccessibilityNodeInfo
পপুলেট করুন। - নিশ্চিত করুন যে কাস্টম
ViewGroup
অবজেক্টগুলি তাদের বাচ্চাদের সঠিকভাবে প্রকাশ করে ।
সহকারীর মতামত বাদ দিয়ে
সংবেদনশীল তথ্য পরিচালনা করতে, আপনার অ্যাপ WindowManager
এর FLAG_SECURE
লেআউট প্যারামিটার সেট করে সহকারী থেকে বর্তমান দৃশ্য বাদ দিতে পারে। আপনাকে অবশ্যই ডায়ালগ সহ কার্যকলাপ দ্বারা তৈরি প্রতিটি উইন্ডোর জন্য স্পষ্টভাবে FLAG_SECURE
সেট করতে হবে৷ আপনার অ্যাপ সহকারী থেকে একটি পৃষ্ঠ বাদ দিতে setSecure()
ব্যবহার করতে পারে। সহকারী থেকে সমস্ত দর্শন বাদ দেওয়ার জন্য কোনও বিশ্বব্যাপী (অ্যাপ-স্তরের) ব্যবস্থা নেই৷ মনে রাখবেন যে FLAG_SECURE
সহায়তা API কলব্যাকগুলিকে ফায়ারিং বন্ধ করার কারণ করে না৷ যে কার্যকলাপটি FLAG_SECURE
ব্যবহার করে তা এখনও এই নির্দেশিকাটির আগে বর্ণিত কলব্যাকগুলি ব্যবহার করে একটি সহকারী অ্যাপকে স্পষ্টভাবে তথ্য প্রদান করতে পারে৷
দ্রষ্টব্য: এন্টারপ্রাইজ অ্যাকাউন্টের জন্য (Android for Work), প্রশাসক DevicePolicyManager
API-এর setScreenCaptureDisabled()
পদ্ধতি ব্যবহার করে কাজের প্রোফাইলের জন্য সহকারী ডেটা সংগ্রহ অক্ষম করতে পারেন৷
ভয়েস মিথস্ক্রিয়া
সহায়ক API কলব্যাকগুলিও কীফ্রেজ সনাক্তকরণের উপর আহ্বান করা হয়। আরও তথ্যের জন্য, ভয়েস অ্যাকশন ডকুমেন্টেশন দেখুন।
জেড-অর্ডার বিবেচনা
একজন সহকারী বর্তমান কার্যকলাপের উপরে প্রদর্শিত একটি হালকা ওভারলে উইন্ডো ব্যবহার করে। যেহেতু ব্যবহারকারী যেকোন সময় সহকারীকে সক্রিয় করতে পারে, চিত্র 4-এ দেখানো হিসাবে ওভারলে উইন্ডোতে হস্তক্ষেপ করে এমন স্থায়ী সিস্টেম সতর্কতা উইন্ডো তৈরি করবেন না।
আপনার অ্যাপ যদি সিস্টেম অ্যালার্ট উইন্ডো ব্যবহার করে, তাহলে সেগুলিকে দ্রুত সরিয়ে ফেলুন কারণ সেগুলিকে স্ক্রিনে রেখে দিলে ব্যবহারকারীর অভিজ্ঞতা নষ্ট হয়৷
গন্তব্য অ্যাপ
অ্যাসিস্ট্যান্ট অ্যাপগুলি সাধারণত গন্তব্য অ্যাপ খুঁজে পেতে ডিপ লিঙ্কিংয়ের সুবিধা নেয়। আপনার অ্যাপটিকে একটি সম্ভাব্য গন্তব্য অ্যাপ তৈরি করতে, গভীর লিঙ্কিং সমর্থন যোগ করার কথা বিবেচনা করুন। বর্তমান ব্যবহারকারীর প্রসঙ্গ এবং গভীর লিঙ্ক বা ওভারলে উইন্ডোতে প্রদর্শিত অন্যান্য সম্ভাব্য ক্রিয়াগুলির মধ্যে মিল (চিত্র 1-এ ধাপ 3-এ দেখানো হয়েছে) Google Assistant-এর বাস্তবায়নের জন্য নির্দিষ্ট। উদাহরণস্বরূপ, Google অ্যাসিস্ট্যান্ট অ্যাপ গন্তব্য অ্যাপে ট্রাফিক চালাতে ডিপ লিঙ্কিং এবং অ্যাপ লিঙ্ক ব্যবহার করে।
আপনার নিজের সহকারী বাস্তবায়ন করা
আপনি আপনার নিজের সহকারী বাস্তবায়ন করতে ইচ্ছুক হতে পারে. চিত্র 2 এ দেখানো হয়েছে, ব্যবহারকারী সক্রিয় সহকারী অ্যাপ নির্বাচন করতে পারেন। সহকারী অ্যাপটিকে অবশ্যই VoiceInteractionSessionService
এবং VoiceInteractionSession
এর একটি বাস্তবায়ন প্রদান করতে হবে, যেমনটি এই VoiceInteraction
উদাহরণে দেখানো হয়েছে। এটির জন্য BIND_VOICE_INTERACTION
অনুমতিরও প্রয়োজন৷ তখন সহকারী পাঠ্যটি গ্রহণ করতে পারে এবং onHandleAssist()
-এ AssistStructure
এর উদাহরণ হিসাবে উপস্থাপিত শ্রেণিবিন্যাস দেখতে পারে। এটি onHandleScreenshot()
এর মাধ্যমে স্ক্রিনশট গ্রহণ করে।