Hücre yayını

CellBroadcast modülü, OEM'ler için tekrarlayan çabaları azaltır (bu da Android ekosisteminde parçalanmayı azaltır ve son kullanıcılara tutarlı davranış sağlar) ve CellBroadcast ile ilgili gereksinimler için taşıyıcı testi ve sertifikalandırmayı 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.

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 uygulamalara mesaj yayınlamayı destekler. Tanımlanmış bir alanda, aynı anda birden fazla cep telefonu kullanıcısına mesaj iletmek için tasarlanmış bire çok coğrafi hedefli ve coğrafi sınırlamalı 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 ve acil olmayan uyarıları (kehribar 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.

Aşağıdaki şekil CellBroadcast mesaj akışını göstermektedir.

CellBroadcastReceiver mesaj akışı

Şekil 1. CellBroadcastReceiver mesaj akışı

  1. Radyo arabirim katmanı (RIL), InBoundSMSHandler bir CDMA/GSM CellBroadcast SMS'i hakkında bilgilendirir.

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

  3. İleti işlendikten sonra CellBroadcastService, amacı sistem 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 sonraki sürümleri çalıştıran cihazlarda kullanılabilen tek bir APEX dosyasına ( com.google.android.cellbroadcast ) dahildir. Modül, package/app/CellBroadcastReceiver içindeki kodu içerir ve mevcut çerçeve sınıflarını packages/modules/CellBroadcastService .

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

CellBroadcast modülü, çerçeve ile yalnızca kararlı @SystemApi ( @hide API'leri yok) kullanarak 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 bir 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ıkları 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şmek için varsayılan sistem SMS uygulamasına android.permission.READ_CELL_BROADCASTS çalışma zamanı izni verir.

CellBroadcast modülünü entegre etme

Bu bölüm, CellBroadcast modülünün nasıl entegre edileceğini açıklar.

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ı'ndan erişir). CellBroadcastReceiver uygulamasını Ayarlar uygulamasından başlatmak için, aşağıdaki ayar yapılandırmalarını com.google.android.cellbroadcastreceiver paket adıyla değiştirin.

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

Mesajlaşma uygulamalarıyla entegrasyon

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

SMS gelen kutusu ile entegrasyon

Bir çalışma zamanı kaynak yerleşimi 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" />

İzinlerin verilmesi 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 izni vermelisiniz. Bir AOSP başvuru 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 bir 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 .

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

CellBroadcastReceiver uygulama ayarları menüsü

Şekil 2. CellBroadcastReceiver uygulama 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şmeyi 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#*#* ( *#*#2627#*#* tuş takımında), bir çevirici uygulamasının *#*# biçimindeki özel çevirici kodunu dinlemesi gerekir. #*# code kodunu girin ve kodu sendDialerSpecialCode genel yöntemini kullanarak işleyin.

Alan bilgisi gereksinimi: Kanal 50

Kanal 50, taşıyıcıların bölge ile ilgili bilgileri yayınlaması için özel bir kanaldır (Güney Afrika'daki MTN hariç). Bu kanal için, yayın mesajları bir açılır 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 kodu görüntüleyerek) görünür.

Android CellBroadcastService uygulaması, yayın Kanalı 50 bilgilerini almak için Ayarlar ve SysUI uygulamaları için 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 .

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. Başvuru 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 rengini ve 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.google.android.cellbroadcastreceiver olarak değiştirin. Ek olarak:

Uygulamada UI dize çeviri kaynakları eksikse veya çeviriler beklentinizi 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 bu dizeleri overlayable.xml göstermelidir. Kullanıcı arabirimi özelleştirmesi için daha fazla yapılandırmaya ihtiyacınız varsa, CellBroadcast destek grubuna ulaşın .

Veri taşıma

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) korumak ve taşımak için bir mekanizma olan eski bir CellBroadcast uygulamasını içerir. CellBroadcast modülünü kullanan Android uygulamaları, veri geçişi için yapılarına eski CellBroadcast uygulamasını dahil etmelidir. Uygulamanız özel bir CellBroadcast çözümü kullanıyorsa verileri korumak için bir CellBroadcastContentProvider APK tanımlamanız gerekir (bir sonraki sürümde eski hücre yayını APK'sını güvenle kaldırabilirsiniz).

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

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

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

  • APK, OEM'in kendi gizli API şemalarını barındırmaya devam edebileceği OEM tarafından geliştirilir ve sahiplenir.

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

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

İleti 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ı, CellBroadcast modülü için desteklenen mesaj özelliklerini listeler. ContentProvider.query yöntemi için (veritabanınızdan) verileri alır.

LegacyCellBroadcastContentProvider için bir başvuru uygulaması için CellBroadcastContentProvider, bakın.

Test yapmak

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

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

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

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

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

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

Temas

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