कॉल दिलाने वाले ऐप्लिकेशन के लिए, कॉल स्टाइल की सूचना बनाएं

Android 12.0 (एपीआई लेवल 31) और इसके बाद के वर्शन में, सिस्टम कॉल की सूचनाओं को अन्य सूचनाओं से अलग करने के लिए, CallStyle सूचना टेंप्लेट उपलब्ध कराता है. इस टेंप्लेट का इस्तेमाल करके, इनकमिंग या जारी कॉल की सूचनाएं बनाएं. इस टेंप्लेट में बड़े फ़ॉर्मैट वाली सूचनाएं दिखाई जा सकती हैं. इनमें कॉल करने वाले व्यक्ति की जानकारी और ज़रूरी कार्रवाइयां शामिल होती हैं. जैसे, कॉल का जवाब देना या कॉल अस्वीकार करना.

इनकमिंग और चालू कॉल, ज़्यादा प्राथमिकता वाले इवेंट होते हैं. इसलिए, नोटिफ़िकेशन शेड में इन सूचनाओं को सबसे ज़्यादा प्राथमिकता मिलती है. इस रैंकिंग की मदद से, सिस्टम इन कॉल को प्राथमिकता देता है और उन्हें अन्य डिवाइसों पर फ़ॉरवर्ड करता है.

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 या उसके बाद के वर्शन में दी गई हाई रैंक असाइन की जा सके. इसके अलावा, CallStyle setColorized() तरीके का इस्तेमाल करके, एपीआई वर्शन 30 या इससे पहले के वर्शन पर सूचनाओं को रंगीन के तौर पर मार्क किया जा सकता है. इससे उन्हें मिलती-जुलती रैंकिंग मिल सकती है.

CallStyle सूचनाओं के साथ Telecom API का इस्तेमाल करें. ज़्यादा जानकारी के लिए, टेलीकॉम फ़्रेमवर्क की खास जानकारी देखें.