Üçüncü taraf arama uygulamalarını destekleme

Android 9, üçüncü taraf arama uygulamalarını daha iyi desteklemek için API'ler sağlar. Üçüncü taraf telefon uygulamaları genellikle operatör telefon görüşmelerinin yanında çalışmak için PHONE_STATE gibi Telefon görüşmesi API'lerini kullanır. Sonuç olarak, üçüncü taraf arama uygulamaları operatör aramalarına öncelik vermek zorunda kalır ve genellikle uygulamada gelen aramaları sessizce reddetmeye veya operatör araması için yer açmak üzere devam eden bir aramayı sonlandırmaya başvurur.

Android 9'daki API'ler, üçüncü taraf uygulamaları ve operatör aramaları arasında eşzamanlı arama senaryolarını destekler. Bu sayede, örneğin, operatör üzerinden arama yaparken üçüncü taraflardan gelen aramaları yanıtlayabilirsiniz. Çerçeve, kullanıcı üçüncü taraf görüşmesine katıldığında operatör üzerinden aramanın yapılmasını sağlamakla yükümlüdür.

Android 9'da üçüncü taraf arama uygulamalarının kendi kendine yönetilen ConnectionService sınıfını uygulaması önerilir. Bu sınıfı kullanarak arama uygulaması oluşturma hakkında daha fazla bilgi için Core-Telecom kitaplığını kullanarak arama uygulaması oluşturma başlıklı makaleyi inceleyin.

Kendi kendine yönetilen ConnectionService sınıfı, geliştiricilere uygulamalarındaki aramaların sistem arama kaydına kaydedilmesini etkinleştirme fırsatı da sunar (EXTRA_LOG_SELF_MANAGED_CALLS bölümüne bakın). Android Uyumluluk Tanım Belgesi'ndeki (CDD) (bölüm 7.4.1.2) şartlara göre, çevirici 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 çevirici uygulamasının bu şartı nasıl karşıladığına dair bir örnek için Üçüncü taraf arama uygulamalarından gelen arama kaydı girişleri bölümüne bakın).

Uygulamalar, bağlantılarında CAPABILITY_SUPPORT_HOLD ve CAPABILITY_HOLD ayarlarını belirlemekten sorumludur. Ancak bazı durumlarda uygulamalar görüşme yapamayabilir. Çerçeve, bu tür durumların çözülmesine yönelik hükümler içerir.

Senaryolar

Çevirici uygulamanızı aşağıdaki senaryoları işleyecek şekilde değiştirmeniz gerekir.

Devam eden bir aramayı sonlandıran gelen aramaları yönetme

Bekletme özelliğinin desteklenmediği devam eden bir üçüncü taraf görüşmesi (ör.SuperCaller görüşmesi) sırasında kullanıcıya mobil arama geldiğinde (ör. FooCom operatörünü kullanarak) Arama veya Telefon uygulamanız, mobil ağ aramasını yanıtlamanın devam eden üçüncü taraf görüşmesini sonlandıracağını kullanıcıya bildirmelidir.

Üçüncü taraf arama uygulaması, çerçeve tarafından tutulamayan devam eden bir aramaya sahip olabileceğinden bu kullanıcı deneyimi önemlidir. Yeni bir cep telefonu araması cevaplandığında devam eden üçüncü taraf araması kesilir.

Örnek için aşağıdaki resimde kullanıcı arayüzünü inceleyin:

Gelen arama, devam eden üçüncü taraf görüşmesinin bağlantısını kesiyor

Şekil 1. Gelen arama, devam eden üçüncü taraf görüşmesinin bağlantısını kesiyor.

Çevirici 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 öğesinin TRUE olarak, EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME öğesinin ise gelen mobil arama yanıtlandığında bağlantısı kesilen uygulamanın adı olarak ayarlandığından emin olun.

Üçüncü taraf görüşme uygulamalarındaki arama kaydı girişleri

Üçüncü taraf arama uygulamalarının geliştiricileri, uygulamalarındaki aramaların sistem arama kaydına kaydedilmesini etkinleştirebilir (EXTRA_LOG_SELF_MANAGED_CALLS bölümüne bakın). Bu durumda, arama kaydında mobil ağ aramalarına ait olmayan girişler olabilir.

AOSP çevirici uygulaması, üçüncü taraf bir arama uygulamasıyla ilgili arama günlüğü girişlerini gösterdiğinde, aramanın yapıldığı uygulamanın adı arama günlüğünde gösterilir.

Üçüncü taraf arama uygulamasıyla yapılan arama kaydı girişi

Şekil 2. Çevirici uygulamasında üçüncü taraf arama uygulamasının adını içeren arama günlüğü girişi.

Bir arama kaydı günlük girişiyle ilişkili 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 PhoneAccountHandle örneği oluşturun. Bu örnek, arama kaydı günlük girişinin kaynağını tanımlar. TelecomManager sorgusunu kullanarak PhoneAccount sınıfıyla ilgili ayrıntıları alın. Bir arama günlüğü girişinin üçüncü taraf arama uygulamasından olup olmadığını belirlemek için PhoneAccount özelliklerini kontrol ederek CAPABILITY_SELF_MANAGED ayarının etkin olup olmadığını görün.

Döndürülen PhoneAccount öğesinin getLabel yöntemi, üçüncü taraf arama uygulamasından gelen bir arama kaydı günlük girişiyle ilişkili uygulamanın adını döndürür.

VoIP arama kaydı entegrasyonu kontrolleri

Android 17'den (API düzeyi 37) itibaren, Core-Telecom ve CallsManager ile entegre olan üçüncü taraf VoIP görüşmesi uygulamaları, görüşme geçmişlerini doğrudan yerel Android sistem görüşmesi günlüğüne (CallLog.Calls) yazabilir.

Android ekosisteminde tutarlı kullanıcı gizliliği ve veri hijyeni sağlamak için, telekom özellik bayrağını (android.software.telecom) bildiren ve android.app.role.DIALER rolüne sahip tüm Android 17 (API düzeyi 37) ve sonraki sürümlerdeki cihazlar, Android Uyumluluk Tanımlama Belgesi (CDD) uyarınca uygulama başına VoIP arama kaydı entegrasyon kontrollerini desteklemelidir.

Cihaz uygulama şartları

Cihazlar, kullanıcıların tek tek üçüncü taraf VoIP uygulamaları için arama günlüğü entegrasyonunu görüntülemesine ve etkinleştirmesine/devre dışı bırakmasına olanak tanıyan, kullanıcı tarafından erişilebilen bir Ayarlar ekranı (genellikle Ayarlar > Arama hesapları > Entegre arama günlükleri altında bulunur) sağlamalıdır.

Bu koşulu karşılamak için stok platformu varsayılanını entegre etmeniz gerekir:

  • Platform ayarları entegrasyonu: Cihazınızın, Android platformu tarafından kullanıma hazır olarak sunulan com.android.phone.settings.PhoneAccountSettingsActivity özelliğini içerdiğinden emin olun (com.android.phone).
  • Amaç çözünürlüğü koşulu: Cihazınız, TelecomManager.ACTION_CONFIGURE_CALL_LOG_INTEGRATION (android.telecom.action.CONFIGURE_CALL_LOG_INTEGRATION) amacını stok platform yönetimi ekranına çözmelidir.

Bir uygulama, sistem istemi veya derin bağlantı aşağıdakileri çağırdığında amaç başarılı bir şekilde başlatılmalı PhoneAccountSettingsActivity ve ActivityNotFoundException oluşturmamalıdır:

Intent intent = new Intent(TelecomManager.ACTION_CONFIGURE_CALL_LOG_INTEGRATION);
context.startActivity(intent);

Doğrulama

Cihazınızın üçüncü taraf görüşme uygulamalarını desteklediğini test etmek için kendi kendine yönetilen ConnectionService sınıfını uygulayan Telecommtest uygulamasını kullanın. Uygulama, /packages/services/Telecomm/testapps/ konumunda bulunuyor.

  1. Aşağıdaki komutları kullanarak test uygulamasını Android kaynak deponuzun kökünden oluşturun:

    mmma packages/services/Telecomm/testapps/

  2. adb install -g -r <apk path> kullanarak derleme APK'sını yükleyin. Başlatıcınıza Self-Managed Sample simgesi eklenir.

  3. Test uygulamasını açmak için simgeye dokunun.

Devam eden bir aramayı sonlandıran gelen aramaları yönetme

Gelen bir aramanın devam eden üçüncü taraf görüşmesini sonlandırdığını doğrulamak için aşağıdaki adımları uygulayın.

Üçüncü taraf görüşme uygulamaları için test uygulaması

Şekil 3. ConnectionService sınıfının örnek uygulamalarıyla uygulamayı test edin.

  1. Elde tutulabilir seçeneğinin işaretini kaldırın.
  2. Yeni bir örnek giden arama başlatmak için GİDEN'e dokunun.
  3. Aramayı etkinleştirmek için ETKİN düğmesine dokunun.
  4. Test edilen cihazın telefon numarasını başka bir telefondan arayın. Bu, arama uygulamanıza, araması sonlandırılacak bir uygulamanın adının sağlandığı senaryoyu tetikler.
  5. İşiniz bittiğinde test uygulamasında BAĞLANTIYI KES düğmesine dokunun.

Üçüncü taraf görüşme uygulamalarındaki arama kaydı girişleri

Yukarıdaki adımları tamamladıktan sonra test uygulaması, sistem çağrı günlüğüne bir çağrı 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ü onaylayın.

VoIP arama kaydı entegrasyonu kontrolleri

Android 17 ve sonraki sürümlerde VoIP görüşmesi günlükleri entegrasyonu amaç şartına uygunluğu doğrulamak için CtsTelecomTestCases Compatibility Test Suite (CTS) testini çalıştırın. Bu test, paket sınırları arasında gönderimin TelecomManager#ACTION_CONFIGURE_CALL_LOG_INTEGRATION (android.telecom.action.CONFIGURE_CALL_LOG_INTEGRATION) cihazda geçerli bir dışa aktarılmış etkinlik işleyicisine (resolveActivity kontrolü) çözümlendiğini doğrular.