CellBroadcast

CellBroadcast modülü, OEM'ler için tekrarlanan çalışmaları azaltır (bu da Android ekosistemindeki parçalanmayı azaltır ve son kullanıcılara tutarlı bir davranış sağlar) ve CellBroadcast ile ilgili şartlar için operatör testini ve sertifikasyonunu kolaylaştırır (kod OEM'ler tarafından değiştirilemediğinden). Bu modül güncellenebilir. Yani normal Android sürüm döngüsünün dışında işlevsellik güncellemeleri alabilir.

Paket biçimi

CellBroadcast modülü aşağıdaki hizmet ve uygulamadan oluşur.

  • CellBroadcastService hizmeti, CellBroadcast SMS'nin kodunu çözme, kablosuz acil durum uyarısı (WEA) 3.0 için coğrafi sınırlama, mesaj çakışması kontrolleri ve mesajları uygulamalara yayınlama işlemlerini destekler. Belirli bir alandaki birden fazla cep telefonu kullanıcısına aynı anda mesaj göndermek için tasarlanmış, coğrafi hedeflemeli ve coğrafi sınırlı bir bire çok mesajlaşma hizmetidir. Hizmet, ETSI GSM komitesi 3GPP tarafından tanımlanır ve telekomünikasyon standartlarının bir parçasıdır.

  • CellBroadcastReceiver uygulaması, acil durum ve acil olmayan uyarıları (ör. kayıp çocuk ve cumhurbaşkanlığı uyarıları) işleyen ve bilgileri operatöre ve bölgesel düzenlemelere göre son kullanıcılara sunan varsayılan bir sistem uygulamasıdır.

CellBroadcast mesaj akışı

Aşağıdaki şekilde CellBroadcast mesaj akışı gösterilmektedir.

CellBroadcastReceiver mesaj akışı

Şekil 1. CellBroadcastReceiver mesaj akışı

  1. Radyo arayüzü katmanı (RIL), CDMA/GSM CellBroadcast SMS'si hakkında InBoundSMSHandler'ü bilgilendirir.

  2. Çerçeve, gelen mesajı ayrıştırmak ve işlemek için CellBroadcast SMS'yi CBS modülüne yönlendirir.

  3. CellBroadcastService, mesaj işlendikten sonra intent'i sistemdeki varsayılan CellBroadcastReceiver uygulamasına yönlendirir.

  4. CellBroadcastReceiver uygulaması mesajı kullanıcıya gösterir.

Modül biçimi

CellBroadcastService ve CellBroadcastReceiver uygulaması, Android 11 veya sonraki sürümleri çalıştıran cihazlarda kullanılabilen tek bir APEX dosyasına (com.android.cellbroadcast) dahildir. Modül, package/app/CellBroadcastReceiver kodunda yer alır ve mevcut çerçeve sınıflarını packages/modules/CellBroadcastService'e taşır.

Modül bağımlılıkları

CellBroadcast modülü, yalnızca kararlı @SystemApi (@hide API'leri yok) kullanarak çerçeveyle etkileşim kurar ve aşağıdaki statik kitaplıklara bağlıdır.

  • Androidx.legacy_legacy-support-v13
  • Androidx.recyclerview_recyclerview
  • Androidx.preference_preference
  • androidx.legacy_legacy-preference-v14
  • androidx.appcompat_appcompat

Çalışma zamanında kaynak yer paylaşımlarını (RRO'lar) kullanarak yapılandırmayı özelleştirebilirsiniz.

İzin yapılandırması

CellBroadcast modülü, platform imzası yerine Google imzası ile imzalanır. Bu, modülün imza izinlerine erişimini kaybetmesi anlamına gelir. Bunun yerine Android 11, yeni imza iznini com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORYCellBroadcast modülü içinde tanımlar. Aynı anahtarla imzalandıkları için yalnızca modüldeki paketler bu izni alabilir. Bu izin, CellBroadcastReceiver uygulamasının CellBroadcastService içindeki veritabanına tam erişmesine olanak tanır.

Platform, varsayılan sistem SMS uygulamasına android.permission.READ_CELL_BROADCASTS çalışma zamanında acil durum uyarılarının geçmişine erişme izni verir.

CellBroadcast modülünü entegre etme

Bu bölümde, CellBroadcast modülünün nasıl entegre edileceği açıklanmaktadır.

Ayarlar ile entegrasyon

CellBroadcast ayarlarının Ayarlar uygulamasında nereye entegre edileceğine karar verebilirsiniz (son kullanıcılar CellBroadcast ayarları sayfasına Ayarlar > Uygulamalar ve Bildirimler > Gelişmiş > Acil durum uyarısı'ndan erişebilir). CellBroadcastReceiver uygulamasını Ayarlar uygulamasından başlatmak için aşağıdaki ayar yapılandırmalarını com.android.cellbroadcastreceiver paket adıyla değiştirin.

<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>

Mesajlaşma uygulamalarıyla entegrasyon

CellBroadcast mesaj geçmişini açmak için mesajlaşma uygulamalarına bir uygulama bağlantısı entegre edebilirsiniz. Android Mesajlar uygulamasında bu ayar Ayarlar > Gelişmiş > Acil durum uyarısı'na entegre edilmiştir. Kendi mesajlaşma uygulamanıza bağlantı entegre etmek için mesajlaşma uygulamasında yolu tanımlayın ve CellBroadcast modülünün bileşen adını com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity olarak yapılandırın.

SMS gelen kutusuyla entegrasyon

Bir çalışma zamanı kaynak yer paylaşımı kullanarak aşağıdaki yapılandırmayı geçersiz kılarak CellBroadcast mesajlarının varsayılan mesajlaşma uygulamasında gösterilmesini etkinleştirebilirsiniz.

<item type="bool" name="enable_write_alerts_to_sms_inbox" />

İzin verme işlemi CellBroadcast modülünün kapsamı dışında olduğundan uçtan uca destek sunmak için CellBroadcast modülüne AppOpsManager.OP_WRITE_SMS iznini vermeniz gerekir. AOSP referans uygulaması için bu SmsApplication.java yamasını inceleyin.

CellBroadcastReceiver uygulamasını başlatın

CellBroadcastReceiver uygulamasında aşağıdaki başlatma noktaları vardır.

  • Ayarlar uygulaması menüsü.

  • CellBroadcast mesaj geçmişine bağlantı veren bir mesajlar uygulaması gibi bir uygulama (üçüncü taraf uygulamaları dahil).

  • (İsteğe bağlı) OEM tarafından Android ana ekranına eklenen başlatma simgesi. Ayrıntılar için Başlatma simgesi ekleme başlıklı makaleyi inceleyin.

CellBroadcastReceiver uygulama ayarları

Aşağıdaki ekran görüntülerinde CellBroadcastReceiver uygulama ayarları menüsü gösterilmektedir.

CellBroadcastReceiver uygulama ayarları menüsü

Şekil 2. CellBroadcastReceiver uygulama ayarları menüsü

Acil durum uyarısı geçmişi

Şekil 3. Acil durum uyarısı geçmişi ekranı

Başlatma simgeleri ekleme

Uygulama başlatıcıdan ve kendi başlatıcı simgelerinizden CellBroadcast mesaj geçmişine erişimi etkinleştirebilirsiniz.

  • Uygulama başlatıcıdan ileti geçmişine erişimi etkinleştirmek için bir RRO kullanarak aşağıdaki yapılandırmayı geçersiz kılın.

    <item type="bool" name="show_message_history_in_launcher" />
    
  • AOSP varsayılan simgesini geçersiz kılmak için bir RRO kullanarak aşağıdaki yapılandırmayı geçersiz kılın.

    <!-- Customize launcher icon for cellbroadcast history -->
    <item type="mipmap" name="ic_launcher_cell_broadcast" />
    

CMAS gizli kodunu etkinleştirme

CMAS gizli kodunu (*#*#CMAS#*#* (numara çevirme tuş takımında *#*#2627#*#*)) etkinleştirmek için bir çevirici uygulaması, *#*#code#*#* biçiminde özel çevirici kodunu dinlemeli ve kodu sendDialerSpecialCode herkese açık yöntemini kullanarak işlemelidir.

Alan bilgisi koşulu: Channel 50

Channel 50, operatörlerin bölgeyle ilgili bilgileri yayınladığı özel bir kanaldır (Güney Afrika'daki MTN hariç). Bu kanalda, yayın mesajları iletişim kutusu veya bildirim oluşturmaz. Bunun yerine, yayın mesajları Ayarlar menüsünün SIM durumunda veya durum çubuğunda (ör. posta kodu gösterilir) görünür.

Android CellBroadcastService uygulaması, Ayarlar ve SysUI uygulamalarının 50. kanalın yayın bilgilerini alabilmesi için hücresel yayın hizmetinde aşağıdaki API'ler için destek sağlar. Bunu uygulamak için aşağıdakileri yapın:

  • android.telephony.action.AREA_INFO_UPDATED yayınını kaydedin ve RRO aracılığıyla alıcı paket adını config_area_info_receiver_packages geçersiz kılın.

  • CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE'e bağlanır.

Ayarlar ve SysUI uygulamaları, CellBroadcast modülünün kapsamı dışında olduğundan uçtan uca destek sunmak için değişikliklerinizi SystemUI veya Ayarlar uygulamasında uygulamanız gerekir. Referans uygulama için CellBroadcastService Ayarları uygulamasına bakın.

Özelleştirme

CellBroadcast modülünün kaynak kodunu doğrudan değiştiremezsiniz ancak parametreleri etkinleştirmek (veya devre dışı bırakmak) için çalışma zamanında kaynak yer paylaşımlarını (RRO'lar) kullanabilirsiniz (örneğin, bildirimlerin rengini ve iletişim kutularındaki boyutları özelleştirebilirsiniz). CellBroadcast modülünde kullanılan parametrelerin varsayılan değerlerini geçersiz kılmak için hedef paket adını com.android.cellbroadcastreceiver olarak değiştirin. Ek bilgiler:

  • Yerleştirilebilir yapılandırmaların listesi için overlayable.xml bölümüne bakın.

  • Örnek uygulama için AOSP'teki RROSampleTestApp bölümüne bakın.

Uygulamada kullanıcı arayüzü dize çeviri kaynakları eksikse veya çeviriler beklentilerinizi karşılamıyorsa bir RRO kullanarak çeviri kaynaklarını geçersiz kılabilir ya da dize çevirilerini CellBroadcast modülüne aktarmak için Google çeviri ekibiyle birlikte çalışabilirsiniz. Çeviri kaynaklarını geçersiz kılarsanız Google'ın geçersiz kılmaya izin vermek için bu dizeleri overlayable.xml içinde göstermesi gerekir. Kullanıcı arayüzü özelleştirme için daha fazla yapılandırmaya ihtiyacınız varsa CellBroadcast destek grubu ile iletişime geçin.

Verileri taşı

Android 11, CellBroadcast modülüne yükseltilen cihazlarda uygulama verilerini (kullanıcı ayarları ve acil durum uyarısı geçmişleri dahil) korumak ve taşımak için kullanılan eski bir CellBroadcast uygulaması içerir. CellBroadcast modülünü kullanan Android uygulamaları, veri taşıma işlemi için derlemelerine eski CellBroadcast uygulamasını eklemelidir. Uygulamanızda özel bir CellBroadcast çözümü kullanılıyorsa verileri korumak için bir CellBroadcastContentProvider APK'sı tanımlamanız gerekir (sonraki bir sürümde eski CellBroadcast APK'sını güvenle kaldırabilirsiniz).

CellBroadcast modülü kullanılacak şekilde yükseltilen cihazlarda modül, iyi tanımlanmış cellbroadcast-legacy yetkilisi aracılığıyla AOSP LegacyCellBroadcastApp'ten veya OEM tarafından tanımlanan CellBroadcastContentProvider APK'sından veri alır.

OEM tarafından tanımlanan bir CellBroadcastContentProvider APK'sı kullanma

CellBroadcastContentProvider APK'sı tanımlanırken APK bu spesifikasyonlara uymalıdır.

  • APK, yalnızca veritabanının içeriğini gösteren ve cellbroadcast-legacy yetkisi olan bir ContentProvider SharedPreferences nesnesi aracılığıyla üçüncü taraf uygulamaları tarafından erişilemeyen bir başsız APK'dır.

  • APK, OEM tarafından geliştirilir ve OEM'nin gizli API şemasını barındırmaya devam edebileceği OEM'ye aittir.

SharedPreferences'ü CellBroadcast modülüne taşımak için CellBroadcastContentProvider APK'sı, aşağıdaki parametrelerle ContentProvider.call yöntemini desteklemelidir:

  • Yetki: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • Yöntem: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • Arg: @SystemAPI CellBroadcast.Preference

    Bu, CellBroadcast modülü için desteklenen paylaşılan tercih anahtarlarının listesidir. Veriler, ContentProvider.call yöntemi için SharedPreferences kaynağından gelir.

Mesaj geçmişini CellBroadcast modülüne taşımak için CellBroadcastContentProvider APK'sı, aşağıdaki parametrelerle ContentProvider.query yöntemini desteklemelidir:

  • Yetki: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI. Sorgu sütunları, CellBroadcast modülü için desteklenen mesaj özelliklerini listeler. ContentProvider.query yöntemi için veri alır (veritabanınızdan).

CellBroadcastContentProvider, için referans uygulama için LegacyCellBroadcastContentProvider bölümüne bakın.

Test

Android Uyumluluk Test Paketi (CTS), uygulamaya bağımlı sistem API'lerinin işlevini doğrular. CellBroadcast modülünü de çalıştırabilirsinizunit tests/testappsp.

OEM, bir cihaz için CMAS gizli kodunu etkinleştirdiyse bu cihaz, aşağıdaki özelliklerle hata ayıklama modunu destekleyebilir.

  • Test amaçlı uyarılar, Diğer Uyarılar altında bir açma/kapatma düğmesiyle gruplandırılır.

  • Geçmiş, alınan ancak görüntülenmeyen tüm iletileri (ör. yinelenen iletiler veya başka bir dilde gönderilen iletiler) içerir.

  • Mesajlar; seri numarası, ileti kimliği ve geçerlilik bitiş tarihi dahil olmak üzere kullanılabilen tüm parametreleri gösterir.

Hata ayıklama modunu etkinleştirmek için çeviricide *#*#CMAS#*#* kodunu girin.

İletişim

CellBroadcast modülüyle ilgili daha fazla bilgi edinmek veya sorularınız için CellBroadcast destek grubu ile iletişime geçin.