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
Ş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 yerineandroid.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 birBIND_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.
Ş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:
- 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,
config_ims_mmtel_package_override_string
MMTEL özelliklerini uygulayan ImsServices için CarrierConfig anahtarı.config_ims_rcs_package_override_string
bakın.
- 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:
config_ims_mmtel_package
: MMTEL özelliklerini uygularconfig_ims_rcs_package
: RCS özelliklerini uygular
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:
- CarrierConfig değeri tarafından tanımlanan ImsService paketi adı
SIM kart olduğunda
config_ims_[mmtel/rcs]_package_override_string
eklendi. - için cihaz yer paylaşımı değerinde tanımlanan ImsService paketi adı
config_ims_[mmtel/rcs]_package
SIM'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
.