Android 12.0 (एपीआई लेवल 31) और इसके बाद के वर्शन पर, सिस्टम CallStyle सूचना टेंप्लेट उपलब्ध कराता है. इससे कॉल की सूचनाओं को अन्य तरह की सूचनाओं से अलग किया जा सकता है. इस टेंप्लेट का इस्तेमाल करके, इनकमिंग या चल रहे कॉल की सूचनाएं बनाएं. इस टेंप्लेट में, बड़े फ़ॉर्मैट वाली सूचनाएं इस्तेमाल की जा सकती हैं. इनमें कॉल करने वाले व्यक्ति की जानकारी और ज़रूरी कार्रवाइयां शामिल होती हैं. जैसे, कॉल का जवाब देना या उसे अस्वीकार करना.
इनकमिंग और जारी कॉल, ज़्यादा प्राथमिकता वाले इवेंट होते हैं. इसलिए, इनकी सूचनाओं को नोटिफ़िकेशन शेड में सबसे ज़्यादा प्राथमिकता मिलती है. इस रैंकिंग की मदद से, सिस्टम इन ज़रूरी कॉल को अन्य डिवाइसों पर फ़ॉरवर्ड कर सकता है.
CallStyle सूचना टेंप्लेट में ये ज़रूरी कार्रवाइयां शामिल हैं:
- इनकमिंग कॉल का जवाब दें या उसे अस्वीकार करें.
- जारी कॉल के लिए, कॉल खत्म करें.
- कॉल स्क्रीन करने के लिए, जवाब दें या कॉल खत्म करें.
इस स्टाइल में कार्रवाइयां, बटन के तौर पर दिखती हैं. सिस्टम, सही आइकॉन और टेक्स्ट अपने-आप जोड़ देता है. बटन को मैन्युअल तरीके से लेबल नहीं किया जा सकता. सूचना के डिज़ाइन से जुड़े सिद्धांतों के बारे में ज़्यादा जानने के लिए, सूचनाएं देखें.
ज़रूरी कार्रवाइयों को इंटेंट के तौर पर पास किया जाता है. जैसे, यहां दिए गए सेक्शन में hangupIntent और answerIntent. इनमें से हर एक, सिस्टम से मैनेज किए जाने वाले टोकन का रेफ़रंस है. टोकन एक लाइटवेट ऑब्जेक्ट होता है, जिसे अलग-अलग ऐप्लिकेशन और प्रोसेस के बीच पास किया जा सकता है. सिस्टम, टोकन की समयसीमा को मैनेज करने और यह पक्का करने के लिए ज़िम्मेदार है कि PendingIntent का इस्तेमाल किया जा सके. भले ही, इसे बनाने वाला ऐप्लिकेशन अब काम न कर रहा हो. किसी दूसरे ऐप्लिकेशन को PendingIntent देने का मतलब है कि आपने उसे बताई गई कार्रवाई करने की अनुमति दी है. जैसे, कॉल अस्वीकार करना या उसका जवाब देना.
यह अनुमति तब भी दी जाती है, जब इंटेंट बनाने वाला ऐप्लिकेशन नहीं चल रहा हो. ज़्यादा जानकारी के लिए, PendingIntent का रेफ़रंस दस्तावेज़ देखें.
Android 14 (एपीआई लेवल 34) से, कॉल की सूचनाओं को खारिज न किए जा सकने वाली सूचनाओं के तौर पर कॉन्फ़िगर किया जा सकता है. इसके लिए, 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)
Android के ज़्यादा वर्शन के साथ काम करने की सुविधा देना
एपीआई के वर्शन 30 या इससे पहले के वर्शन पर, CallStyle सूचनाओं को फ़ोरग्राउंड सेवा से जोड़ें. इससे उन्हें एपीआई लेवल 31 या इसके बाद के वर्शन में दी गई हाई रैंक असाइन की जा सकेगी. इसके अलावा, एपीआई के वर्शन 30 या उससे पहले के वर्शन पर CallStyle सूचनाओं को रंगीन के तौर पर मार्क करके, मिलती-जुलती रैंकिंग हासिल की जा सकती है. इसके लिए, setColorized() तरीके का इस्तेमाल करें.
CallStyle की सूचनाओं के साथ Telecom API का इस्तेमाल करें. ज़्यादा जानकारी के लिए, टेलीकॉम फ़्रेमवर्क की खास जानकारी देखें.