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

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

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

CallStyle सूचना के टेंप्लेट में, ये ज़रूरी कार्रवाइयां शामिल होती हैं:

  • इनकमिंग कॉल के लिए, जवाब दें या अस्वीकार करें पर टैप करें.
  • चल रहे कॉल के लिए, कॉल काटें.
  • कॉल स्क्रीन करने के लिए, जवाब दें या कॉल काटें पर टैप करें.

इस स्टाइल में मौजूद कार्रवाइयां, बटन के तौर पर दिखती हैं. सिस्टम, सही आइकॉन और टेक्स्ट अपने-आप जोड़ देता है. बटन को मैन्युअल तरीके से लेबल करने की सुविधा मौजूद नहीं है. सूचनाएं डिज़ाइन करने के सिद्धांतों के बारे में ज़्यादा जानने के लिए, सूचनाएं देखें.

लेबल वाले बटन के साथ कॉल स्टाइल की सूचनाएं
पहली इमेज. इनकमिंग और जारी कॉल के लिए CallStyle टेंप्लेट.

ज़रूरी कार्रवाइयों को इंटेंट के तौर पर पास किया जाता है. जैसे, यहां दिए गए सेक्शन में hangupIntent और answerIntent. इनमें से हर एक, सिस्टम के ज़रिए मैनेज किए जाने वाले टोकन का रेफ़रंस होता है. टोकन एक छोटा ऑब्जेक्ट होता है, जिसे अलग-अलग ऐप्लिकेशन और प्रोसेस के बीच पास किया जा सकता है. सिस्टम, टोकन की लाइफ़टाइम को मैनेज करने और यह पक्का करने के लिए ज़िम्मेदार होता है कि PendingIntent का इस्तेमाल किया जा सके. भले ही, इसे बनाने वाला ऐप्लिकेशन अब काम न कर रहा हो. किसी दूसरे ऐप्लिकेशन को PendingIntent देने का मतलब है कि आपने उसे बताई गई कार्रवाई करने की अनुमति दी है. जैसे, कॉल अस्वीकार करना या जवाब देना. यह अनुमति तब भी दी जाती है, जब इंटेंट बनाने वाला ऐप्लिकेशन चालू न हो. ज़्यादा जानकारी के लिए, PendingIntent का रेफ़रंस दस्तावेज़ देखें.

Android 14 (एपीआई लेवल 34) से, कॉल की सूचनाओं को खारिज न किए जा सकने वाले के तौर पर कॉन्फ़िगर किया जा सकता है. इसके लिए, Notification.FLAG_ONGOING_EVENT से Notification.Builder#setOngoing(true) तक 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 या उसके बाद के वर्शन में दी गई उच्च रैंक असाइन की जा सके. इसके अलावा, setColorized() तरीके का इस्तेमाल करके, एपीआई वर्शन 30 या इससे पहले के वर्शन पर सूचना को रंगीन के तौर पर मार्क किया जा सकता है. इससे सूचना को मिलती-जुलती रैंकिंग मिल सकती है.CallStyle

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