Android 9, üçüncü taraf arama uygulamalarını daha iyi desteklemek için API'ler sağlar. Üçüncü taraf arama uygulamaları, operatör telefon aramalarıyla birlikte var olabilmek için genellikle PHONE_STATE
yayını gibi telefon API'lerini kullanır. Sonuç olarak, üçüncü taraf arama uygulamaları operatör aramalarına öncelik vermelidir ve genellikle operatör aramasına yer açmak için uygulamada gelen aramaları sessizce reddetme veya devam eden bir aramayı sonlandırma yoluna gitmelidir.
Android 9'daki API'ler, üçüncü taraf uygulamaları ile operatör aramaları arasında eşzamanlı arama senaryolarını destekler. Bu sayede, örneğin operatör araması sırasında üçüncü taraf araması alabilirsiniz. Kullanıcı üçüncü taraf aramasıyla etkileşime geçtiğinde operatör aramasının bekletilmesini sağlamak çerçevenin sorumluluğundadır.
Android 9'da, üçüncü taraf çağrı uygulamalarının kendi kendine yönetilen ConnectionService
API'sini uygulaması önerilir. Bu API'yi kullanarak arama uygulaması oluşturma hakkında daha fazla bilgi için Arama uygulaması oluşturma başlıklı makaleyi inceleyin.
Kendi kendini yöneten ConnectionService
API, geliştiricilere uygulamalarındaki aramaların sistem arama kaydına kaydedilmesini etkinleştirme olanağı da sunar (EXTRA_LOG_SELF_MANAGED_CALLS
bölümüne bakın). Android Uyumluluk Tanımlama Belgesi (CDD)'ndeki şartlara (7.4.1.2 numaralı bölüm) göre, arama cihazınızın veya telefon uygulamanızın bu arama kaydı girişlerini gösterdiğinden ve aramanın yapıldığı üçüncü taraf arama uygulamasının adını gösterdiğinden emin olmanız gerekir (AOSP arama cihazı uygulamasının bu koşulu nasıl karşıladığını gösteren bir örnek için Üçüncü taraf arama uygulamalarından gelen arama kaydı girişleri bölümüne bakın).
Uygulamaların bağlantılarında CAPABILITY_SUPPORT_HOLD
ve CAPABILITY_HOLD
ayarlarını yapmak uygulamaların sorumluluğundadır. Ancak bazı durumlarda uygulama arama
yapamaz. Çerçeve, bu tür destek kayıtlarını çözüme ulaştırmaya yönelik hükümler içerir.
Senaryolar
Arama uygulamanızı aşağıdaki senaryoları ele alacak şekilde değiştirmeniz gerekir.
Devam eden bir aramanın bağlantısını kesen gelen aramaları yönetme
Beklemeyi desteklemeyen devam eden bir üçüncü taraf araması (ör.SuperCaller araması) olduğu ve kullanıcının mobil arama aldığı (ör. FooCom operatörünü kullandığı) bir senaryoda, Telefon veya Telefon uygulaması kullanıcıya mobil ağ aramasını yanıtlamanın devam eden üçüncü taraf aramasını sonlandıracağını belirtmelidir.
Üçüncü taraf arama uygulamasında, çerçeve tarafından tutulamayan devam eden bir arama olabileceğinden bu kullanıcı deneyimi önemlidir. Yeni bir mobil aramayı yanıtladığınızda devam eden üçüncü taraf aramasının bağlantısı kesilir.
Örnek için şekildeki kullanıcı arayüzüne bakın:
Şekil 1. Devam eden üçüncü taraf aramasının, gelen arama nedeniyle kesilmesi.
Arama uygulamanız, arama ekstralarını kontrol ederek gelen bir aramanın başka bir aramanın bağlantısının kesilmesine neden olup olmadığını kontrol edebilir.
EXTRA_ANSWERING_DROPS_FG_CALL
değerinin TRUE
, EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME
değerinin ise gelen mobil aramayı yanıtladıktan sonra araması kesilen uygulamanın adına ayarlandığından emin olun.
Üçüncü taraf arama uygulamalarından gelen arama kaydı girişleri
Üçüncü taraf arama uygulamalarının geliştiricileri, uygulamalarındaki aramaların sistem arama günlüğüne kaydedilmesini etkinleştirebilir (EXTRA_LOG_SELF_MANAGED_CALLS
bölümüne bakın). Bu, arama günlüğünde mobil ağ aramalarına ait olmayan girişler olabileceği anlamına gelir.
AOSP numara çevirici uygulaması bir üçüncü taraf arama uygulamasıyla ilgili arama kaydı girişlerini görüntülediğinde, aramanın gerçekleştiği uygulamanın adı aşağıdaki şekilde gösterildiği gibi çağrı günlüğünde görüntülenir:
Şekil 2. Arama uygulamasında üçüncü taraf arama uygulamasının adını içeren arama günlüğü girişi.
Arama kaydı girişiyle ilişkili bir uygulamanın adını belirlemek için arama kaydı sağlayıcısındaki PHONE_ACCOUNT_COMPONENT_NAME
ve PHONE_ACCOUNT_ID
sütunlarını kullanarak arama kaydı girişinin kaynağını tanımlayan bir PhoneAccountHandle
örneği oluşturun. Telefon Hesabı'nın ayrıntılarını almak için TelecomManager
sorgusunu sorgulayın.
Bir arama kaydı girişinin üçüncü taraf arama uygulamasından olup olmadığını belirlemek için CAPABILITY_SELF_MANAGED
değerinin ayarlanıp ayarlanmadığını görmek üzere PhoneAccount
özelliklerini kontrol edin.
Döndürülen PhoneAccount
öğesinin getLabel
yöntemi, üçüncü taraf arama uygulamasındaki bir arama günlüğü girişiyle ilişkili uygulamanın adını döndürür.
Doğrulama
Cihazınızın üçüncü taraf arama uygulamalarını destekleyip desteklemediğini test etmek için kendi kendini yöneten ConnectionService API'yi uygulayan Telecomm test uygulamasını kullanın. Uygulama /packages/services/Telecomm/testapps/
konumunda bulunuyor.
Test uygulamasını, aşağıdakileri kullanarak Android kaynak deponuzun kökünden derleyin:
mmma packages/services/Telecomm/testapps/
Derleme apk'sını
adb install -g -r <apk path>
kullanarak yükleyin. Ardından, başlatıcınıza Self-Managed Sample simgesi eklenir.Test uygulamasını açmak için simgeye dokunun.
Devam eden bir aramanın bağlantısını kesen gelen aramaları yönetme
Gelen bir aramanın devam eden üçüncü taraf aramasının bağlantısını kestiğini doğrulamak için aşağıdaki adımları uygulayın.
Şekil 3. Uygulamayı, ConnectionService API'nin örnek uygulamalarıyla test edin.
- Tutabilir seçeneğini temizleyin.
- Yeni bir örnek giden arama başlatmak için GİDEN'e dokunun.
- Aramayı etkinleştirmek için ETKİNLİK düğmesine dokunun.
- Test edilen cihazın telefon numarasını başka bir telefonla arayın. Bu, çeviricinize bir uygulamanın adının sağlandığı senaryoyu tetikler. Bu uygulamanın araması kesilir.
- İşlemi tamamladığınızda test uygulamasında BAĞLANTIYI KES düğmesine dokunun.
Üçüncü taraf arama uygulamalarından gelen arama günlüğü girişleri
Yukarıdaki adımları tamamladıktan sonra test uygulaması, sistem arama günlüğüne bir arama kaydetmiş olmalıdır. Cihazın, üçüncü taraf arama uygulamalarından gelen aramaları kaydettiğini onaylamak için telefon uygulamanızı açın ve aramanın sistem arama kaydında göründüğünü doğrulayın.