Telefon araması uygulamaları için arama stili bildirim oluşturma

Android 12.0 (API düzeyi 31) ve sonraki sürümlerde sistem, arama bildirimlerini diğer bildirim türlerinden ayırt etmek için CallStyle bildirim şablonunu sağlar. Gelen veya devam eden arama bildirimleri oluşturmak için bu şablonu kullanın. Şablon, arayan bilgilerini ve aramaları cevaplama ya da reddetme gibi gerekli işlemleri içeren geniş formatlı bildirimleri destekler.

Gelen ve devam eden çağrılar yüksek öncelikli etkinlikler olduğundan bu bildirimler bildirim gölgesinde en yüksek önceliği alır. Bu sıralama, sistemin bu öncelikli aramaları diğer cihazlara yönlendirmesine de olanak tanır.

CallStyle bildirim şablonu aşağıdaki gerekli işlemleri içerir:

  • Gelen aramalar için yanıtlayın veya Reddet'i seçin.
  • Devam eden aramalar için kapatın.
  • Arama filtreleme için cevapla veya kapat.

Bu stildeki işlemler, sistem tarafından uygun simgeler ve metinler otomatik olarak eklenen düğme olarak görünür. Düğmelerin manuel olarak etiketlenmesi desteklenmez. Bildirim tasarımı ilkeleri hakkında daha fazla bilgi için Bildirimler konusuna bakın.

Etiketli düğmelere sahip arama stili bildirimler
Şekil 1. Gelen ve devam eden aramalar için CallStyle şablonu.

Zorunlu işlemler, aşağıdaki bölümlerde hangupIntent ve answerIntent gibi amaç olarak iletilir. Bunların her biri, sistem tarafından korunan bir jetona referanstır. Jeton, farklı uygulama ve işlemler arasında iletilebilen hafif bir nesnedir. Sistem, jetonun kullanım ömrünü yönetmek ve jetonu oluşturan uygulama artık çalışmıyor olsa bile PendingIntent öğesinin kullanılabilir olmasını sağlamaktan sorumludur. Başka bir uygulamaya PendingIntent verdiğinizde, reddetme veya yanıtlama gibi belirtilen işlemi gerçekleştirme izni vermiş olursunuz. Bu izin, amacı oluşturan uygulama çalışmıyor olsa bile verilir. Daha fazla bilgi için PendingIntent referans belgelerine göz atın.

Android 14'ten (API düzeyi 34) itibaren, arama bildirimlerini kapatılamaz olacak şekilde yapılandırabilirsiniz. Bunu yapmak için Notification.FLAG_ONGOING_EVENT ile Notification.Builder#setOngoing(true) arasındakiler ile CallStyle bildirimlerini kullanın.

Aşağıda, CallStlye bildirimiyle çeşitli yöntemlerin kullanılmasına ilişkin örnekler verilmiştir.

Kotlin

// Create a new call, setting the user as the caller.
val incomingCaller = Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build()

Java

// Create a new call with the user as the caller.
Person incomingCaller = new Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build();

Gelen çağrı

Gelen bir arama için çağrı stili bildirim oluşturmak üzere forIncomingCall() yöntemini kullanın.

Kotlin

// Create a call style notification for an incoming call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incomingCaller)

Java

// Create a call style notification for an incoming call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incomingCaller);

Devam eden çağrı

Devam eden bir çağrı için çağrı stili bildirim oluşturmak üzere forOngoingCall() yöntemini kullanın.

Kotlin

// Create a call style notification for an ongoing call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forOngoingCall(caller, hangupIntent))
    .addPerson(second_caller)

Java

// Create a call style notification for an ongoing call.
Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forOngoingCall(caller, hangupIntent))
    .addPerson(second_caller);

Aramaları filtreleme

Bir aramayı filtrelemek üzere bir çağrı stili bildirim oluşturmak için forScreeningCall() yöntemini kullanın.

Kotlin

// Create a call style notification for screening a call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller)

Java

// Create a call style notification for screening a call.
Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller);

Daha fazla Android sürümü arasında uyumluluk sağlayın

API 30 veya önceki sürümlerdeki CallStyle bildirimlerini, API düzeyi 31 veya sonraki sürümlerde verilen üst sıralamayı atamak için bir ön plan hizmetiyle ilişkilendirin. Ayrıca, API 30 veya önceki sürümlerde CallStyle bildirimleri, setColorized() yöntemi kullanılarak bildirim renkli olarak işaretleyerek benzer bir sıralamaya ulaşabilir.

CallStyle bildirimleriyle Telecom API'leri kullanın. Daha fazla bilgi için Telekomünikasyon çerçevesine genel bakış bölümüne bakın.