در Android 12.0 (سطح API 31) و نسخههای جدیدتر، سیستم
CallStyle الگوی اعلان را برای متمایز کردن اعلانهای تماس از
انواع دیگر اعلانها ارائه میدهد. از این الگو برای ایجاد اعلانهای تماس ورودی یا
در جریان استفاده کنید. این الگو از اعلانهای قالب بزرگ که شامل اطلاعات تماسگیرنده و کنشهای موردنیاز مثل پاسخ دادن یا رد کردن تماسها است پشتیبانی میکند.
ازآنجاییکه تماسهای ورودی و درحال انجام رویدادهای اولویت بالا هستند، این اعلانها در کشو اعلانها اولویت بالایی دارند. این رتبهبندی همچنین به سیستم امکان میدهد این تماسهای اولویتدار را به دستگاههای دیگر بازارسال کند.
الگوی اعلان CallStyle شامل اقدامات الزامی زیر است:
- برای تماسهای ورودی، پاسخ دادن یا رد کردن را انتخاب کنید.
- برای تماسهای جاری، قطع کردن را انتخاب کنید.
- برای غربال کردن تماس، پاسخ دادن یا قطع کردن را انتخاب کنید.
کنشهای این سبک بهصورت دکمه ظاهر میشوند و سیستم بهطور خودکار نمادها و نوشتار مناسب را اضافه میکند. برچسبگذاری دستی دکمهها پشتیبانی نمیشود. برای اطلاعات بیشتر درباره اصول طراحی اعلان، به اعلانها مراجعه کنید.
کنشهای لازم بهعنوان هدفهایی مثل hangupIntent و
answerIntent در بخشهای زیر ارسال میشوند. هریک از این موارد به یک
رمز که توسط سیستم نگهداری میشود ارجاع میدهد. رمز یک شیء سبکوزن است که
میتواند بین برنامهها و فرایندهای مختلف منتقل شود. سیستم مسئول مدیریت طول عمر کد و اطمینان از این است که PendingIntent حتی اگر برنامهای که آن را ایجاد کرده است دیگر درحال اجرا نباشد قابل استفاده است. وقتی به برنامه دیگری PendingIntent میدهید، به آن برنامه اجازه میدهید
عملیات مشخصشده را انجام دهد، مثلاً رد کردن یا پاسخ دادن.
این اجازه حتی اگر برنامهای که هدف را ایجاد کرده است درحال اجرا نباشد نیز اعطا میشود. برای اطلاعات بیشتر، به اسناد مرجع برای
PendingIntent مراجعه کنید.
از Android 14 (سطح API 34) به بعد، میتوانید اعلانهای تماس را بهگونهای پیکربندی کنید که
قابلبستن نباشند. برای این کار، از اعلانهای CallStyle با
Notification.FLAG_ONGOING_EVENT تا
Notification.Builder#setOngoing(true) استفاده کنید.
در زیر نمونههایی از استفاده از روشهای مختلف با 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 ارائه دهید
اعلانهای CallStyle در نسخههای میانای برنامهسازی کاربردی ۳۰ یا قدیمیتر را با
سرویس پیشزمینهای مرتبط کنید تا رتبه بالایی که در سطح میانای برنامهسازی کاربردی
۳۱ یا جدیدتر به آنها داده شده است به آنها اختصاص داده شود. علاوهبراین، CallStyle اعلان در نسخه ۳۰
میانای برنامهسازی کاربردی یا نسخههای قدیمیتر میتواند با علامتگذاری اعلان بهعنوان
رنگی، بااستفاده از روش setColorized()، به رتبهبندی مشابهی دست یابد.
از «میاناهای برنامهسازی کاربردی مخابرات» با CallStyle اعلان استفاده کنید. برای اطلاعات بیشتر، به
نمای کلی چارچوب مخابرات مراجعه کنید.