IMS uygulayın

Android 9, yeni bir SystemApi arayüzü sunuyor. ImsService IP Multimedya Alt Sistemi'ni (IMS) uygulamanıza yardımcı olmak için geliştirilmiştir. ImsService API, Android platformu ile satıcı veya satıcı arasında iyi tanımlanmış arayüz operatör tarafından sağlanan IMS uygulamasıyla

ImsService'e genel bakış

Şekil 1. ImsService'e genel bakış

IMS uygulayıcısı, ImsService arayüzünü kullanarak önemli bilgiler IMS kayıt bilgileri, SMS gibi platforma sinyal gönderme IMS entegrasyonu ve ses ve görüntü sağlayan MmTel özelliği entegrasyonu arıyor. ImsService API aynı zamanda bir Android System API'dir. Yani Kaynak yerine doğrudan Android SDK'ya göre oluşturulur. IMS aynı zamanda cihaza önceden yüklenmiş olan uygulamayı güncellenebilmelidir.

Örnekler ve kaynak

Android, AOSP'de şunların bölümlerini uygulayan bir uygulama sağlar: Test ve geliştirme amaçları için ImsService API. Daha fazla adresinde /testapps/ImsTestService adresine bakın.

ImsService API ile ilgili belgeleri şurada bulabilirsiniz: ImsService ve API'deki diğer sınıflarda.

Uygulama

ImsService API; IMS'yi birçok farklı şekilde uygulamanıza olanak tanıyan üst düzey bir API'dir. veya mevcut donanıma bağlı olarak değişebilir. Örneğin, uygulamadaki değişiklikler IMS uygulamasının uygulamada tamamen yer alıp almadığına bağlı olarak veya modeme kısmen ya da tamamen boşaltılmış olabilir. Android ana bant işlemcisine boşaltma için herkese açık bir HAL sağlamamalıdır; bu nedenle boşaltma işlemi, modeme HAL uzantınızı kullanarak yapılmalıdır.

Eski IMS uygulamalarıyla uyumluluk

Android 9, ImsService API'yi içerse de IMS için daha eski bir uygulama kullanan cihazlar API'yi destekleyemez. Bu cihazlarda eski AIDL arayüzleri ve sarmalayıcı sınıfları taşındı android.telephony.ims.compat ad alanına ekler. Android'e geçerken 9, daha eski cihazların devam etmek için aşağıdakileri yapması gerekir eski API'nin desteğini kullanıyor olabilir.

  • ImsService uygulamasının ad alanını android.telephony.ims.compat ad alanı API'si.
  • android.telephony.ims.compat.ImsService intent filtresi işlemi yerine android.telephony.ims.ImsService işlemi.

Çerçeve daha sonra uyumluluk katmanını kullanarak ImsService'e bağlanır Android 9'da sağlanan eski sürümle ImsService uygulaması.

Çerçeveyle ImsService kaydı

ImsService API, Android çerçevesinin ile başlar. üç adım bahsedeceğim. Öncelikle, ImsService uygulaması uygulamanın AndroidManifest.xml sayfasını kullanan platform; ikinci olarak da uygulamanın desteklediği IMS özelliklerini (MmTel veya RCS) tanımlama; üçüncü olarak da operatörde ya da güvenilir IMS uygulaması olarak doğrulanmalıdır. yapılandırma veya cihaz yer paylaşımı.

Hizmet tanımı

IMS uygulaması, Manifest'e aşağıdaki biçimi kullanarak service girişi:

<service
    android:name="com.egcorp.ims.EgImsService"
    android:directBootAware="true"
    Android:persistent="true"
    ...
    android:permission="android.permission.BIND_IMS_SERVICE" >
    ...
    <intent-filter>
        <action android:name="android.telephony.ims.ImsService" />
    </intent-filter>
</service>

AndroidManifest.xml dilindeki service tanımı şunları tanımlar: özellikleri gibi özellikleri kullanır:

  • directBootAware="true": Hizmetin şu kullanıcı tarafından keşfedilmesine ve çalıştırılmasına izin verir: telephony, kullanıcı cihazın kilidini açmadan önce. Hizmet erişemiyor cihaz şifrelemeli depolama alanını kullanır. Daha fazla bkz. Doğrudan Başlatma modunu destekleme ve Dosya Tabanlı Şifreleme.
  • persistent="true": Bu hizmetin kalıcı olarak çalışmasına izin verir. sonlandırılmış silme işleminden sonra çalıştırılabilir. Bu özellik YALNIZCA uygulamanız bir sistem uygulaması olarak geliştirildi.
  • permission="android.permission.BIND_IMS_SERVICE": Yalnızca bir BIND_IMS_SERVICE izninin olduğu bir işlem, uygulamaya bağlanmasını sağlar. Bu, dolandırıcı bir uygulamanın hizmeti sunar. Çünkü yalnızca sistem uygulamalarına bahsedeceğim.

Hizmet, işlemle birlikte intent-filter öğesini de belirtmelidir android.telephony.ims.ImsService. Bu, çerçevenin ImsService

IMS özellik spesifikasyonu

ImsService bir Android hizmeti olarak tanımlandıktan sonra AndroidManifest.xml dosyasını yüklemek istemiyorsanız ImsService hangi IMS özelliklerini desteklediğini açıklamalıdır. Android şu anda MmTel ve RCS özelliklerini desteklemektedir ancak yalnızca MmTel'i destekler. pek çok faydası vardır. Google Analytics 4'e entegre edilmiş herhangi bir RCS API'si bu çerçeveyi, Scrum’ın bir özelliği olarak tanımlamanın hala ImsService

android.telephony.ims.ImsFeature politikasında tanımlanmış olup şu geçerli özellikleri bir ImsService, IMS'nin neden önemli olduğuna dair bir açıklama uygulamasının bu özelliklerden birini veya tümünü uygulaması gerekir. Her tanımlandığından bu sayfada, ImsService öğesinin her SIM yuvası için tanımladığı özellikleri içerir.

FEATURE_MMTEL

ImsService, aşağıdakiler için destek içeren IMS MMTEL özelliğini uygular: acil durum bağlantısı hariç tüm IMS medyaları (IR.92 ve IR.94 spesifikasyonları) Acil durum araması için IMS PDN. Şunu içeren herhangi bir ImsService uygulaması: MMTEL özelliklerini desteklemesi, android.telephony.ims.MmTelFeature temel sınıf ve özel bir değer döndür MmTelFeature uygulaması ImsService#createMmTelFeature.

FEATURE_AMERGENCY_MMTEL

Bu özelliğin bildirilmesi yalnızca acil durumun Acil durum hizmetleri için IMS PDN kullanılabilir. Bu özellik ImsService cihazınız varsa platform için her zaman devre anahtarı yedeği kullanılır acil durum hizmetleri için. Bunun için FEATURE_MMTEL özelliği tanımlanmalıdır. tanımlanabilir.

FEATURE_RCS

ImsService API, herhangi bir IMS RCS özelliğini uygulamaz ancak android.telephony.ims.RcsFeature temel sınıfı yine de faydalı olabilir. Çerçeve otomatik olarak ImsService'e bağlanır ve ImsService#createRcsFeature çağrısı yapar paketin RCS sağlaması gerektiğini algıladığında. SIM kart ilişkilendirilmişse RCS hizmeti kaldırıldığında çerçeve, otomatik olarak RcsFeature#onFeatureRemoved, ardından ilişkili ImsService öğelerini temizler entegre edebilirsiniz. Bu işlev, özel URL'lerden bazılarını kaldırabilir aksi takdirde RCS özelliğinin sunması gereken algılama veya bağlama mantığını kullanır.

Desteklenen özelliklerin kaydı

Telefon çerçevesi öncelikle ImsService'e bağlayarak ImsService#querySupportedImsFeatures API kullanımını destekliyor. çerçeve, ImsService'in hangi özellikleri destekleyeceğini hesaplar, ImsService'in yer alacağı her bir özellik için ImsService#create[...]Feature çok önemli. IMS uygulamasının desteklediği özelliklerde değişiklik olursa ImsService#onUpdateSupportedImsFeatures kullanarak çerçevenin desteklenen özellikleri yeniden hesaplayabilirsiniz. Daha fazla bilgi için aşağıdaki şemaya bakın ilk kullanıma hazırlama ve bağlama hakkında bilgi edinin.

ImsService&#39;i başlatma ve bağlama

Şekil 2: ImsService'i başlatma ve bağlama

ImsService uygulamasının çerçeve algılama ve doğrulama

ImsService, AndroidManifest.xml dosyasında doğru bir şekilde tanımlandıktan sonra, Platform, şu durumlarda ImsService'e (güvenli bir şekilde) bağlanacak şekilde yapılandırılmalıdır: uygun olmalıdır. Çerçevenin bağlı olduğu iki tür ImsServices vardır:

  1. Operatör "geçersiz kıl" ImsService: Bu ImsServices, bir veya daha fazla hücresel operatöre bağlı olması ve yalnızca eşleşen bir SIM kart takıldığında sınırlanır. Bu,
  2. Cihaz "varsayılan" ImsService: Yüklenen varsayılan ImsService değeridir cihaz üzerinde bir OEM tarafından eklenmiş ve IMS hizmetlerini bir operatörün ImsService'i kullanılamadığı ve aşağıdaki sorunların cihazda SIM kart takılı olmadığı veya SIM kartın eklenen, bir operatör ImsService hizmetine sahip değil. Bu şu yapılandırmalar kullanılarak cihaz yer paylaşımında tanımlanır:

Android, üçüncü taraf indirilebilir ImsService içeren uygulamaları desteklemez olduğundan, burada tanımlanan tüm ImsService uygulamaları Sistem uygulamaları olması ve /system/priv-app/ içinde bulunması gerekir. /product/priv-app/ klasörünü kullanarak uygun izinleri (ör. telefon, mikrofon, konum, kamera ve kişi izinleri). Doğrulama sürecinin IMS uygulamasının paket adı, CarrierConfig veya yukarıda tanımlanan bindirme değerleri, yalnızca güvenilen, önceden yüklenmiş uygulamalar bağlı.

Özelleştirme

ImsService kullanan uygulamalar yalnızca operatörün "geçersiz kılması" olarak yapılandırılır. ImsService veya cihaz "default" MMTEL veya RCS işlevleri için ImsService yapılandırmaları. ImsService ayrıca, desteklediği IMS özelliklerinin (MMTEL ve RCS) ImsService#onUpdateSupportedImsFeatures yöntemini çağırın. Bu, çerçeveyi hangi ImsServices'in bağlı olduğunu ve hangi özellikleri desteklediğini yeniden hesaplayın. Öğe IMS uygulaması, desteklenen hiçbir özellik olmadan çerçeveyi günceller. ImsService Telefon yeniden başlatılana veya IMS uygulamasıyla eşleşir.

Birden çok ImsService için bağlama önceliği

Çerçeve, Cihaza önceden yüklenir ve SIM yuvası başına en fazla iki ImsServices'e bağlanır (her özellik için bir ImsService) şu sırayla gösterilir:

  1. CarrierConfig değeri tarafından tanımlanan ImsService paketi adı SIM kart olduğunda config_ims_[mmtel/rcs]_package_override_string eklendi.
  2. için cihaz yer paylaşımı değerinde tanımlanan ImsService paketi adı config_ims_[mmtel/rcs]_packageSIM'in olmadığı durumlar da dahil kart takıldı. Bu ImsService, Acil Durum MmTel özelliğini DESTEKLEMELİDİR.

Bu paketi kullanacak her bir kargo şirketi için cihaz yer paylaşımına izin vermelisiniz.

Şimdi bu özellikleri her bir özellik için ayrı ayrı inceleyelim. Bir cihaz için (tek veya çoklu SIM) Tek bir SIM kart takılıyken, iki IMS özelliği kullanılabilir: MMTel ve RCS. Çerçeve, her bir özellik ve satır öğesi için yukarıda tanımlanan sırayla bağlanmaya çalışır Söz konusu özellik, Operatörde tanımlanan ImsService için kullanılamıyorsa. Yapılandırmayı geçersiz kılarsa çerçeve, varsayılan ImsService hizmetinize döner. Örneğin aşağıdaki tabloda, çerçevenin hangi IMS özelliğini Bir sistemde yüklü ImsServices'i uygulayan üç IMS uygulamasını kullanın şu özelliklerle:

  • Operatör A ImsService RCS'yi destekler
  • Operatör B ImsService, RCS ve MMTel'i destekler
  • OEM ImsService, RCS ve MMTel'i destekler
SIM Kart Takıldı RCS Özelliği MMTel Özelliği
Operatör A Operatör A OEM
Operatör B Operatör B Operatör B
SIM kart yok OEM OEM

Doğrulama

IMS uyarınca, IMS uygulamasının kendisini doğrulamaya yönelik araçlar dahil edilmemiştir. özellikler çok büyük ve özel doğrulama ekipmanları kullanıyor. İlgili içeriği oluşturmak için kullanılan testler yalnızca telefon çerçevesinin telefona düzgün bir şekilde yanıt verdiğini doğrulayabilir ImsService API.

IMS uygulaması geliştirme

Android telefon yığınıyla arayüz oluşturan bir IMS uygulaması geliştirirken uygulamanın Belirli bir operatör aboneliği için ekli ImsService örneği.

MMTEL ve RCS özellikleri için ImsService'in durumunu dinlemek veya değiştirmek üzere "the" ImsManager sınıfını kullanarak ImsMmTelManager, ImsRcsManager veya IMS'ye özgü ProvisioningManager sınıfını kullanır. Uygulama, daha sonra IMS'ye özgü hizmet ve temel hazırlık durumlarını dinleyebilir Örneğin:

  • Etkin ve kullanılabilir MMTEL veya RCS özellikleri
  • IMS kayıt durumu değiştiğinde yapılan güncellemeler
  • IMS özelliklerinin temel hazırlık durumu
  • Kullanıcının etkinleştirdiği IMS özellikleri

ImsStateCallback'i kullan

ImsService kalıcı olarak bağlı bir hizmet olsa da Yeni bir SIM kart veya yerleştirilmiş abonelik etkin hale geldiğinde sınır değişebilir operatör yapılandırması değiştiğinde oluşturulur. ImsService devam ederken bir uygulama, sürekli olarak ImsService görünmez olarak çökerse veya veya yapılandırma değişikliği olabilir.

Android 13 veya sonraki sürümleri çalıştıran cihazlarda İlişkilendirilmiş bir abonelik için ImsService örneğinin bir uygulama, ImsStateCallback sınıfını kullanır. ImsMmTelManager veya ImsRcsManager örneği aldığımızda uygulamanın önce ImsMmTelManager#registerImsStateCallback veya ImsRcsManager#registerImsStateCallback. Aşağıdaki durumlarda belirli abonelikler için geri arama güncellemelerini almaya devam etmek istiyorsanız ImsService tekrar kullanılabilir hale gelir. Uygulamanın kaydını iptal etmesi veya mevcut kaydı silmesi gerekir ImsMmTelManager, ImsRcsManager veya ProvisioningManager; ve yeni geri çağırmalar kaydedin.

IMS'yi desteklemeyen bir abonelik varsa çerçeve ImsStateCallback#onUnavailable bu nedenle REASON_NO_IMS_SERVICE_CONFIGURED. Bu nedenle, ImsService ve IMS ile ilgili API'ler abonelik.

Çok düşük bir ihtimal de olsa telefon işlemi kilitlenirse uygulama ImsStateCallback#onError ve artık kayıtlı ImsStateCallback örneğine ilişkin güncellemeleri almaz. Bu koşuldan kurtarmak için ImsStateCallback örneğini şunun için yeniden kaydedin: numaralı telefonu arayarak ilgili aboneliği ImsMmTelManager#registerImsStateCallback veya ImsRcsManager#registerImsStateCallback.