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

প্রয়োজনীয় অ্যাকশনগুলো ইন্টেন্ট হিসেবে পাস করা হয়, যেমন পরবর্তী সেকশনগুলোতে hangupIntent এবং answerIntent । এগুলোর প্রত্যেকটি হলো সিস্টেম দ্বারা পরিচালিত একটি টোকেনের রেফারেন্স। টোকেনটি একটি লাইটওয়েট অবজেক্ট যা বিভিন্ন অ্যাপ এবং প্রসেসের মধ্যে পাস করা যায়। সিস্টেম টোকেনের জীবনকাল পরিচালনা করার জন্য এবং যে অ্যাপটি PendingIntent তৈরি করেছে সেটি আর চালু না থাকলেও যেন তা ব্যবহারযোগ্য থাকে, তা নিশ্চিত করার জন্য দায়ী। যখন আপনি অন্য কোনো অ্যাপকে একটি PendingIntent দেন, তখন আপনি সেটিকে নির্দিষ্ট অপারেশনটি, যেমন ডিক্লাইন বা অ্যানসার, সম্পাদন করার অনুমতি দেন। যে অ্যাপটি ইন্টেন্টটি তৈরি করেছে সেটি চালু না থাকলেও এই অনুমতি দেওয়া হয়। আরও তথ্যের জন্য, PendingIntent এর রেফারেন্স ডকুমেন্টেশন দেখুন।
অ্যান্ড্রয়েড ১৪ (এপিআই লেভেল ৩৪) থেকে, আপনি কল নোটিফিকেশনগুলোকে অপরিবর্তনীয় (non-dismissible) হিসেবে কনফিগার করতে পারেন। এটি করার জন্য, Notification.Builder#setOngoing(true) এর মাধ্যমে Notification.FLAG_ONGOING_EVENT সহ CallStyle নোটিফিকেশন ব্যবহার করুন।
CallStyle নোটিফিকেশনের সাথে বিভিন্ন মেথড ব্যবহারের উদাহরণ নিচে দেওয়া হলো।
// Create a new call, setting incoming caller. val incomingCaller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
ইনকামিং কল
ইনকামিং কলের জন্য কল স্টাইল নোটিফিকেশন তৈরি করতে forIncomingCall() মেথডটি ব্যবহার করুন।
// For demonstrative purposes only, should use a well-defined Intents. val contentIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val declineIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val hangupIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val answerIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) // Create a call style notification for an incoming call. val builderForIncomingCall = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forIncomingCall(incomingCaller, declineIntent, answerIntent)) .addPerson(incomingCaller)
চলমান কল
চলমান কলের জন্য কল স্টাইল নোটিফিকেশন তৈরি করতে forOngoingCall() মেথডটি ব্যবহার করুন।
// Create a call style notification for an ongoing call. val builderForOngoingCall = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forOngoingCall(callerAtOtherEnd, hangupIntent)) .addPerson(caller)
একটি কল স্ক্রিন করুন
কল স্ক্রিনিং করার জন্য কল স্টাইল নোটিফিকেশন তৈরি করতে forScreeningCall() মেথডটি ব্যবহার করুন।
// Create a call style notification for screening a call. val builder = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(caller)
আরও বেশি অ্যান্ড্রয়েড সংস্করণে সামঞ্জস্য প্রদান করুন
এপিআই লেভেল ৩১ বা তার পরবর্তী সংস্করণে প্রাপ্ত উচ্চ র্যাঙ্কটি পাওয়ার জন্য, এপিআই ৩০ বা তার পূর্ববর্তী সংস্করণের CallStyle নোটিফিকেশনগুলোকে একটি ফোরগ্রাউন্ড সার্ভিসের সাথে যুক্ত করুন। এছাড়াও, এপিআই ভার্সন ৩০ বা তার পূর্ববর্তী সংস্করণের CallStyle নোটিফিকেশনগুলো setColorized() মেথড ব্যবহার করে নোটিফিকেশনটিকে রঙিন (colorized) হিসেবে চিহ্নিত করার মাধ্যমেও অনুরূপ র্যাঙ্কিং অর্জন করতে পারে।
CallStyle নোটিফিকেশনের সাথে টেলিকম এপিআই ব্যবহার করুন। আরও তথ্যের জন্য, টেলিকম ফ্রেমওয়ার্ক ওভারভিউ দেখুন।