কথোপকথন বিজ্ঞপ্তি এবং উইজেট

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

অ্যান্ড্রয়েড ১১-এর এই ফিচারগুলোর ওপর ভিত্তি করে, অ্যান্ড্রয়েড ১২ দুটি নতুন কনভারসেশন ফিচার নিয়ে এসেছে:

  • সেটিংস-এর সাম্প্রতিক কথোপকথন ফিচারটি ব্যবহারকারীদের নোটিফিকেশনের জন্য অপেক্ষা না করেই সাম্প্রতিক কথোপকথনের নোটিফিকেশন আচরণ কাস্টমাইজ করার সুযোগ দেয়।

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

এই নথিতে কথোপকথন বিজ্ঞপ্তি এবং উইজেটগুলির বাস্তবায়ন, কাস্টমাইজেশন এবং বৈধতা যাচাইয়ের দিকগুলি বর্ণনা করা হয়েছে।

কথোপকথন বিজ্ঞপ্তির সংক্ষিপ্ত বিবরণ

অ্যান্ড্রয়েড ১১-এ ‘কনভারসেশন’ নামে একটি নতুন সিস্টেম প্রিমিটিভ চালু করা হয়েছে, যা বিদ্যমান শেয়ারিং শর্টকাট অবজেক্ট দ্বারা উপস্থাপিত হয় (যা অ্যান্ড্রয়েড ৯-এর সাথে চালু করা হয়েছিল)।

Conversations প্রিমিটিভটি নিম্নলিখিতভাবে ব্যবহার করা যেতে পারে:

  • Sharesheet-এর মাধ্যমে সিস্টেম জুড়ে অ্যাপগুলোর মধ্যে কথোপকথনের ডেটা শেয়ার করা যায় (যা Android 10-এ আগে থেকেই রয়েছে)।

  • ড্রাইভিং বাবল (অ্যান্ড্রয়েড ১১-এর শর্টকাট )-এর জন্য। চিত্র ১ দেখুন।

  • নোটিফিকেশন শেডের উপরে থাকা নতুন কনভারসেশন স্পেসে অংশগ্রহণ করতে (যা অ্যান্ড্রয়েড ১১-এ চালু করা হয়েছে)। চিত্র ২ দেখুন।

  • কনভারসেশন উইজেট তৈরি করার জন্য (অ্যান্ড্রয়েড ১২-এ বাস্তবায়িত)।

    conv_bubbles

    চিত্র ১: নোটিফিকেশন ড্রয়ার থেকে একটি বাবল হিসেবে নোটিফিকেশন চালু হচ্ছে

    conv_notification

    চিত্র ২: নোটিফিকেশন শেডের উপরে অবস্থিত কথোপকথনের স্থান

কথোপকথনটির প্রতিনিধিত্বকারী শর্টকাটের সাথে লিঙ্ক করার পাশাপাশি, নোটিফিকেশনটি MessagingStyle ব্যবহার করে কথোপকথনটির শেষ বার্তাটিকে Conversation স্পেসে অন্তর্ভুক্ত করে।

জিএমএস অংশীদারদের নিম্নলিখিত বিষয়গুলো বাস্তবায়ন করতে হবে:

  • নোটিফিকেশন শেডের উপরে একটি পৃথক বিভাগ হিসাবে নতুন কথোপকথনের স্থান।
  • একটি নোটিফিকেশন স্টাইল যা কথোপকথন-নির্দিষ্ট বাবল প্যাটার্নকে অনুমোদন ও সমর্থন করে।

যেসব পার্টনার ‘কনভারসেশনস’ বাস্তবায়ন করবে, তাদের ‘ইম্পর্টেন্ট কনভারসেশনস’-ও বাস্তবায়ন করতে হবে। তবে, ‘কনভারসেশনস’-এর বাস্তবায়ন একই ধরনের OEM কনসেপ্টের সাথে সামঞ্জস্যপূর্ণ হতে পারে। সার্বিকভাবে, পার্টনারদের তাদের নির্দিষ্ট সিস্টেম UI-এর সাথে কনভারসেশন সেকশনটি সামঞ্জস্য করার স্বাধীনতা রয়েছে। পার্টনারকে HAL/ড্রাইভার/কার্নেল কোড/এক্সটেনশন পরিবর্তন বা বাস্তবায়ন করতে হবে না।

AOSP-এর SystemUI ও PeopleService বিভাগে নিম্নলিখিত রেফারেন্স ইমপ্লিমেন্টেশনটি দেখুন:

frameworks/base/packages/SystemUI/src/com/android/systemui/people/
frameworks/base/core/java/android/app/people/
frameworks/base/services/people/java/com/android/server/people/

বৈধতা

আপনার ফিচারটির সংস্করণটি উদ্দেশ্য অনুযায়ী কাজ করছে কিনা তা নিশ্চিত করতে, নিম্নলিখিত বিষয়গুলো যাচাই করুন:

  1. যেসব অ্যাপ Conversation API সম্পূর্ণরূপে সমর্থন করে, তারা তাদের নোটিফিকেশনগুলো নতুন বিভাগে দেখতে পায় এবং সাধারণ NotificationChannel- এর পরিবর্তে কথোপকথন অনুযায়ী সেই নোটিফিকেশনগুলো কাস্টমাইজ করতে পারে।

  2. কথোপকথন-নির্দিষ্ট বাবলগুলো কাজ করছে।

বাস্তবায়ন যাচাই করার জন্য, নোটিফিকেশন প্যাকেজে নিম্নলিখিত টেস্টগুলো ব্যবহার করুন:

  • CTS পরীক্ষা।

    cts/tests/app/src/android/app/cts/NotificationManagerTest.java
    
  • CTS ভেরিফায়ার পরীক্ষা।

    cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
    
    

কথোপকথন উইজেটগুলির সংক্ষিপ্ত বিবরণ

অ্যান্ড্রয়েড ১২-এ, কনভারসেশন উইজেট ফিচারটি অ্যান্ড্রয়েড ১১-এ তৈরি কনভারসেশন উপস্থাপনার উপর ভিত্তি করে নির্মিত হয়েছে (যেমনটি পূর্ববর্তী বিভাগে বর্ণনা করা হয়েছে), যা অ্যাপগুলিকে সেই কথোপকথনগুলির স্ট্যাটাস প্রদান করার সুযোগ দেয়, যা কনভারসেশন উইজেটগুলিতে প্রদর্শিত হয়।

conv_widgets

চিত্র ৩: কথোপকথন উইজেটে প্রদর্শিত কথোপকথনসমূহ

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

অংশীদারকে অবশ্যই নিম্নলিখিত বিষয়গুলো বাস্তবায়ন করতে হবে:

  1. SystemUI দ্বারা প্রদত্ত একটি উইজেট।
  2. উইজেট বাছাই স্ক্রিন থেকে এই উইজেটগুলো যোগ করার একটি কার্যপ্রণালী।
  3. উইজেটের আকার পরিবর্তনের জন্য নিম্নলিখিত সমর্থন রয়েছে:
    • ব্যবহারকারী যখন লেআউটের আকার পরিবর্তন করেন বা ল্যান্ডস্কেপে ঘোরান, তখন লেআউটটিকে আরও উপযুক্ত আকারের লেআউটে পরিবর্তন করতে onAppWidgetOptionsChanged() ব্যবহার করুন।
    • আপনার উইজেটের আকারের পরিবর্তনগুলোকে সঠিকভাবে সীমাবদ্ধ করতে maxResizeHeight , maxResizeWidth , minWidth , minHeight , minResizeWidth , minResizeHeight ব্যবহার করুন।

কনভারসেশন উইজেট প্রয়োগ করার সময় নিম্নলিখিত নির্ভরতাগুলো সম্পর্কে সচেতন থাকুন:

  • অংশীদারকে HAL/ড্রাইভার/কার্নেল কোড পরিবর্তন বা প্রয়োগ করতে হবে না।
  • বাস্তবায়নের জন্য স্ট্যাটাস এপিআই ব্যবহার করা হয়, যা অ্যাপগুলোকে কোনো কথোপকথন এবং সংশ্লিষ্ট উইজেটে স্ট্যাটাস বা উপলব্ধতার তথ্য যোগ করার সুযোগ দেয়।
  • নতুন ডিভাইস বাস্তবায়ন এবং আপগ্রেড বাস্তবায়ন, উভয় ক্ষেত্রেই প্রক্রিয়াটি একই।
  • ‘কনভারসেশন উইজেটস’ ফিচারটি অ্যান্ড্রয়েড ১২-এ চালু হতে চলা একটি নতুন ফিচারের উপর নির্ভরশীল, যা সম্প্রতি দেখা কথোপকথনগুলোকে (যেমন নোটিফিকেশন থেকে) ক্যাশ করে রাখে। এই পরবর্তী ফিচারটি একজন ব্যবহারকারীকে তার হোম স্ক্রিনে সম্ভাব্যভাবে যোগ করতে পারে এমন কথোপকথনের তালিকা প্রসারিত করার সুযোগ দেয়।

SystemUI এবং Launcher3 ফাইলগুলিতে নিম্নলিখিত রেফারেন্স বাস্তবায়ন দেখুন:

frameworks/base/packages/SystemUI/src/com/android/systemui/people/
frameworks/base/core/java/android/app/people/
frameworks/base/services/people/java/com/android/server/people/

কাস্টমাইজেশন

কনভারসেশন উইজেট ফিচারটি চালু বা বন্ধ করা যায় না। তবে, GMS-এর শর্তাবলী পূরণ সাপেক্ষে একজন পার্টনার উইজেট টেমপ্লেটগুলোর লেআউট পরিবর্তন করতে পারেন।

বৈধতা

আপনার ফিচারটির সংস্করণটি উদ্দেশ্য অনুযায়ী কাজ করছে কিনা তা নিশ্চিত করতে, নিম্নলিখিত বিষয়গুলো যাচাই করুন:

  1. লঞ্চারে দীর্ঘক্ষণ চাপ দিয়ে রাখলে, উইজেট পিকারের মাধ্যমে কোনো কথোপকথনের জন্য একটি নতুন উইজেট যোগ করা যায়। উইজেট পিকারের UI-এর জন্য চিত্র ৪ দেখুন:

    widget_picker

    চিত্র ৪: নতুন কথোপকথন উইজেট যোগ করার জন্য উইজেট পিকার UI

  2. নির্বাচিত কথোপকথন থেকে ডিভাইসে নোটিফিকেশন পাঠানো হলে, সেই নোটিফিকেশনগুলো প্রতিফলিত করার জন্য উইজেটটি আপডেট হয়।

  3. ConversationStatus API ব্যবহার করে সেই কথোপকথনে স্ট্যাটাস প্রয়োগ করলে, উইজেটটি সেই স্ট্যাটাসগুলো প্রতিফলিত করে।

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

বাস্তবায়ন যাচাই করার জন্য, নোটিফিকেশন প্যাকেজে নিম্নলিখিত টেস্টগুলো ব্যবহার করুন:

  • এপিআই সারফেসগুলোর জন্য সিটিএস টেস্ট (পিপলম্যানেজারটেস্ট)।

    cts/tests/app/src/android/app/cts/NotificationManagerTest.java
    
  • জিএমএস প্রয়োজনীয়তার জন্য ম্যানুয়াল পরীক্ষা - কথোপকথন।