Hücre Yayını

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şlev güncellemeleri alabilir.

Paket biçimi

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

  • CellBroadcastService hizmeti; CellYayın SMS kodu çözmeyi, kablosuz acil durum uyarısı (WEA) 3.0 için coğrafi sınır belirleme, mesaj yineleme kontrollerini ve uygulamalara mesaj yayınlamayı 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ıra sahip 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ırıp işlemek için CellBroadcast SMS'i 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ında (com.android.cellbroadcast) bulunur. 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 değil) kullanarak çerçeveyle etkileşime girer 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 durumda modül, imza izinlerine erişimi kaybeder. Android 11, bunun yerine CellBroadcast modülü içinde com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY yeni imza iznini tanımlar. Aynı anahtarla imzalandıkları için yalnızca modüldeki paketler izni alabilir. Bu izin, CellBroadcastReceiver uygulamasının CellBroadcastService içindeki veritabanına tam erişim sahibi olmasını sağlar.

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. Bu, Android Mesajlaşma uygulamasında 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 entegre et

Bir çalışma zamanı kaynak yer paylaşımı kullanarak aşağıdaki yapılandırmayı geçersiz kılarak varsayılan mesajlaşma uygulamasında CellBroadcast mesajlarının 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 sağlamak için CellBroadcast modülüne AppOpsManager.OP_WRITE_SMS iznini vermeniz gerekir. AOSP referans uygulaması için bu SmsApplication.java yamasına bakın.

CellBroadcastReceiver uygulamasını başlatın

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

  • Ayarlar uygulaması menüsü.

  • Hücre Yayını mesaj geçmişine bağlantı veren mesaj uygulamaları 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#*#*, arama 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 gereksinimi: Kanal 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 alması 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 ile bağlayın.

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 kodunun üzerine yerleştirilen öğeleri (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'de 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ştirmesi için daha fazla yapılandırmaya ihtiyacınız varsa CellBroadcast destek grubuna ulaşın.

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 derlemelerine eski CellBroadcast uygulamasını içermelidir. 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 öğesini CellBroadcast modülüne taşımak için CellBroadcastContentProvider APK'sının aşağıdaki parametrelerle ContentProvider.call yöntemini desteklemesi gerekir:

  • Yetkili: @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:

  • Yetkili: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI. Sorgu sütunlarında, CellBroadcast modülü için desteklenen mesaj özellikleri listelenir. 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 uyarıları, bir açma/kapatma düğmesiyle Diğer Uyarılar altında 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ı, mesaj kimliği ve geçerlilik bitiş tarihi dahil olmak üzere mevcut tüm parametreleri gösterir.

Hata ayıklama modunu etkinleştirmek için numara çeviricide *#*#CMAS#*#* numarasını çevirin.

İ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.