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ı davranış sağlar) ve CellBroadcast ile ilgili gereksinimler için taşıyıcı testlerini ve sertifikasyonunu kolaylaştırmaya yardımcı olur (çünkü kod OEM'ler tarafından değiştirilemez) ). Bu modül güncellenebilir, yani normal Android sürüm döngüsünün dışındaki işlevsellik güncellemelerini alabilir.

Paket formatı

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

  • CellBroadcastService hizmeti, CellBroadcast SMS kod çözmeyi, kablosuz acil durum uyarısı (WEA) 3.0 için coğrafi sınırlamayı, mesaj çoğaltma kontrollerini ve mesajların uygulamalara yayınlanmasını destekler. Tanımlı bir alandaki birden fazla cep telefonu kullanıcısına aynı anda mesaj göndermek için tasarlanmış, birden çoğa coğrafi hedefli ve coğrafi sınırlamalı bir 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ı (sarı ve başkanlık uyarıları gibi) işleyen ve bilgileri operatör 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 şekil CellBroadcast mesaj akışını göstermektedir.

CellBroadcastReceiver mesaj akışı

Şekil 1. CellBroadcastReceiver mesaj akışı

  1. Radyo arayüz katmanı (RIL), InBoundSMSHandler bir CDMA/GSM CellBroadcast SMS'i hakkında bilgi verir.

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

  3. Mesaj işlendikten sonra CellBroadcastService, amacı sistemin varsayılan CellBroadcastReceiver uygulamasına iletir.

  4. CellBroadcastReceiver uygulaması mesajı kullanıcıya görüntüler.

Modül formatı

CellBroadcastService ve CellBroadcastReceiver uygulaması, Android 11 veya üstünü çalıştıran cihazlarda kullanılabilen tek bir APEX dosyasına ( com.android.cellbroadcast ) dahil edilmiştir. Modül, package/app/CellBroadcastReceiver içindeki kodu içerir ve mevcut çerçeve sınıflarını packages/modules/CellBroadcastService geçirir.

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

CellBroadcast modülü, yalnızca kararlı @SystemApi ( @hide API'leri yok) 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ı kaynak katmanlarını (RRO'lar) kullanarak yapılandırmayı özelleştirebilirsiniz.

İzin yapılandırması

CellBroadcast modülü, platform imzası yerine Google imzasıyla imzalanmıştır; bu, modülün imza izinlerine erişimini kaybettiği anlamına gelir. Bunun yerine Android 11, CellBroadcast modülü içinde com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY yeni imza iznini tanımlar; Yalnızca modüldeki paketler aynı anahtarla imzalandığı için izin alabilir. Bu izin, CellBroadcastReceiver uygulamasının CellBroadcastService içindeki veritabanına tam erişime sahip olmasını sağlar.

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

CellBroadcast modülünün entegrasyonu

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

Ayarlarla Entegrasyon

CellBroadcast ayarlarının nereye entegre edileceğine Ayarlar uygulamasında karar verebilirsiniz (son kullanıcılar CellBroadcast ayarları sayfasına Ayarlar > Uygulamalar ve Bildirimler > Gelişmiş > Acil durum uyarısı bölümünden 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 Mesajlaşma uygulamasında bu, Ayarlar > Gelişmiş > Acil durum uyarısı bölümüne entegre edilmiştir. Kendi mesajlaşma uygulamanıza bir 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 katmanı kullanarak aşağıdaki yapılandırmayı geçersiz kılarak, varsayılan mesajlaşma uygulamasında CellBroadcast mesajlarının görüntülenmesini etkinleştirebilirsiniz.

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

İzin vermek 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şlatma

CellBroadcastReceiver uygulaması aşağıdaki başlatma noktalarına sahiptir.

  • Ayarlar uygulaması menüsü.

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

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

CellBroadcastReceiver uygulama ayarları

Aşağıdaki ekran görüntüleri CellBroadcastReceiver uygulamasının ayarlar menüsünü göstermektedir.

CellBroadcastReceiver uygulaması ayarları menüsü

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

Acil durum uyarı geçmişi

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

Başlatma simgeleri ekleme

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

  • Uygulama başlatıcıdan mesaj 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 etkinleştirmek için, *#*#CMAS#*#* (tuş takımında *#*#2627#*#* ), bir çevirici uygulamasının *#*# biçimindeki özel çevirici kodunu dinlemesi gerekir. #*#* code girin ve sendDialerSpecialCode genel yöntemini kullanarak kodu işleyin.

Alan bilgisi gereksinimi: Kanal 50

Kanal 50, operatörlerin bölgeyle ilgili bilgileri yayınlaması için özel bir kanaldır (Güney Afrika'daki MTN hariç). Bu kanal için yayın mesajları açılır bir iletişim kutusu veya bildirimle sonuçlanmaz. Bunun yerine, yayın mesajları Ayarlar menüsünün SIM durumunda veya durum çubuğunda (örneğin bir posta kodunun görüntülenmesi) görünür.

Android CellBroadcastService uygulaması, yayın Kanalı 50 bilgilerini almak için Ayarlar ve SysUI uygulamalarına yönelik hücre 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 bir RRO aracılığıyla config_area_info_receiver_packages alıcı paket adını geçersiz kılın.

  • CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE bağlanın.

Ayarlar ve SysUI uygulamaları CellBroadcast modülünün kapsamı dışında olduğundan, uçtan uca destek sağlamak için değişikliklerinizi SystemUI veya Ayarlar uygulamasında uygulamanız gerekir. Referans uygulaması 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ı kaynak katmanlarını (RRO'lar) kullanabilirsiniz (örneğin, iletişim kutularındaki bildirimlerin ve boyutların rengini ö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 olarak:

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

Veriler taşınıyor

Android 11, CellBroadcast modülüne yükseltme yapan cihazlar için uygulama verilerini (kullanıcı ayarları ve acil durum uyarı geçmişleri dahil) koruyan ve aktaran bir mekanizma olan eski bir CellBroadcast uygulamasını içerir. CellBroadcast modülünü kullanan Android uygulamaları, veri geçişi için eski CellBroadcast uygulamasını yapılarına dahil etmelidir. Uygulamanız özel bir CellBroadcast çözümü kullanıyorsa verileri korumak için bir CellBroadcastContentProvider APK'sı tanımlamanız gerekir (eski hücre yayını APK'sını sonraki bir sürümde güvenle kaldırabilirsiniz).

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

OEM tanımlı bir CellBroadcastContentProvider APK'sını kullanma

CellBroadcastContentProvider APK'sını tanımlarken APK'nın bu spesifikasyonlara uyması gerekir.

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

  • APK, OEM'in kendi gizli API şemasını barındırmaya devam edebileceği OEM tarafından geliştirilmiş ve ona aittir.

SharedPreferences 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 bir listesidir. Veriler ContentProvider.call yöntemi için SharedPreferences gelir.

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

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

CellBroadcastContentProvider, yönelik bir referans uygulaması için LegacyCellBroadcastContentProvider bakın.

Test yapmak

Android Uyumluluk Test Paketi (CTS), uygulamaya bağlı sistem API'lerinin işlevselliğini doğrular. Ayrıca CellBroadcast modülü unit tests/testappsp da çalıştırabilirsiniz.

OEM bir aygıt için CMAS gizli kodunu etkinleştirmişse bu aygıt aşağıdaki özelliklerle hata ayıklama modunu destekleyebilir.

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

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

  • Mesajlar, seri numarası, mesaj kimliği ve son kullanma tarihi dahil olmak üzere mevcut tüm parametreleri görüntüler.

Hata ayıklama modunu etkinleştirmek için çeviricide *#*#CMAS#*#* tuşlayın.

Temas etmek

CellBroadcast modülü hakkında daha fazla ayrıntı veya sorularınız için CellBroadcast destek grubuyla iletişime geçin.