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 servis destekleri CellBroadcast SMS çözme, kablosuz acil uyarı (WEA) 3.0, mesaj çoğaltılması kontrolleri için geofencing ve uygulamalar yayın iletileri. 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. Servis tarafından tanımlanır ETSI GSM komitesi 3GPP ve telekomünikasyon standartları bir parçasıdır.

  • CellBroadcastReceiver uygulaması bir varsayılan sistem uygulaması olduğunu kolları acil ve acil olmayan (örneğin amber ve başkanlık uyarıları gibi) uyarıları ve hediyeler taşıyıcı ve bölgesel düzenlemelere dayalı son kullanıcılara bilgi.

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

CellBroadcastReceiver mesaj akışı

Şekil 1. CellBroadcastReceiver mesaj akışı

  1. Bildirdiğinde, radyo arabirim katmanı (RIL) InBoundSMSHandler bir CDMA / GSM CellBroadcast SMS hakkında.

  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ı, tek dahildir APEX dosyası ( com.google.android.cellbroadcast Android 11 veya üstünü çalıştıran cihazlar için kullanılabilir). Modül kodu içeren package/app/CellBroadcastReceiver ve çerçeve sınıfları mevcut göç yapan packages/modules/CellBroadcastService .

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

CellBroadcast modülü sadece stabil kullanarak çerçeve ile etkileşimde @SystemApi (hayır @hide API) ve şu statik kütüphaneleri bağlıdır.

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

Sen kullanarak yapılandırmayı özelleştirebilirsiniz çalışma zamanı kaynak bindirmeleri (RROs) .

İ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 yeni imza izni tanımlayan com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY CellBroadcast modülü içinde; 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 verir android.permission.READ_CELL_BROADCASTS acil durum uyarı geçmişini erişmek için varsayılan sistem SMS uygulamasına izin çalışma zamanı.

CellBroadcast modülünü entegre etme

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

Ayarlarla Entegrasyon

Sen (son kullanıcılar, Ayarlar> Uygulamalar ve Bildirimler> Gelişmiş> Acil alarm dan CellBroadcast ayarları sayfasına erişmek) Ayarlar uygulamasında CellBroadcast ayarlarını entegre nerede karar verebilir. Ayarları uygulamasından CellBroadcastReceiver uygulamasını başlatmak için, paket adı ile aşağıdaki ayar yapılandırmaları değiştirebilirsiniz com.google.android.cellbroadcastreceiver .

<!-- 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 uyarı entegre edilmiştir. Kendi mesajlaşma uygulamasında bir bağlantı entegre etmek için, mesajlaşma uygulamasında yolunu tanımlamak gibi CellBroadcast modülü için bileşen adını yapılandırmak com.google.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity .

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" />

İzinleri verme CellBroadcast modülünün kapsamı dışında olduğundan, vermesi gerekir AppOpsManager.OP_WRITE_SMS uçtan uca destek sağlamak için CellBroadcast modülüne izni. Bir AOSP başvuru uygulaması için, bakınız bu SmsApplication.java yama .

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 bir başlatma ikonu ekleniyor .

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

CellBroadcastReceiver uygulama ayarları menüsü

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

Acil durum uyarı 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ş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ıyla), bir çevirici uygulaması şeklinde özel çevirici kodu için dinlemek gerekir * # * # code # * # * ve kamu yöntemini kullanarak kodu işlemek sendDialerSpecialCode .

Alan bilgisi gereksinimi: Kanal 50

Kanal 50, taşıyıcıların alanla 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 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:

  • Kayıt yayın android.telephony.action.AREA_INFO_UPDATED ve alıcı paket adı geçersiz config_area_info_receiver_packages bir RRO yoluyla.

  • Bind 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. Bir referans uygulaması için, bkz CellBroadcastService Ayarları uygulamasına .

özelleştirme

Doğrudan CellBroadcast modülünün kaynak kodunu değiştiremez, ancak kullanabilirsiniz çalışma zamanı kaynak bindirmeleri (RROs) (veya devre dışı bırakın) etkinleştirmek için parametreleri (örneğin, iletişim kutularında bildirim ve boyutların rengini özelleştirebilirsiniz). CellBroadcast modülünde kullanılan parametrelerin varsayılan değerleri geçersiz kılmak için, hedef paket adını değiştirin com.google.android.cellbroadcastreceiver . 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. Eğer çeviri kaynakları geçersiz, Google bu dizeleri ortaya koymalıdır overlayable.xml geçersiz kılma izin vermek. Eğer UI özelleştirme için daha fazla yapılandırmaları gerekiyorsa, ulaşmaya CellBroadcast destek grubuna .

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 için yükseltilmiş cihazlarda, modül, iyi tanımlanmış yoluyla AOSP LegacyCellBroadcastApp veya OEM tanımlanmış CellBroadcastContentProvider APK ya veri getirir cellbroadcast-legacy yetki.

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

  • APK veritabanında ve yalnızca içeriklerini yüzeyleri başsız APK olan SharedPreferences bir içinden ContentProvider ile nesne cellbroadcast-legacy otoritesi ve üçüncü parti uygulamalar tarafından erişilebilir değil.

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

Taşıma işlemini gerçekleştirmek için SharedPreferences CellBroadcast modülüne, CellBroadcastContentProvider APK desteklemesi gerekir ContentProvider.call aşağıdaki parametrelerle) yöntemini:

  • Kurum: @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. Veri gelen SharedPreferences için ContentProvider.call yöntemi.

CellBroadcast modülüne ileti geçmişini geçirmek için, CellBroadcastContentProvider APK desteklemesi gerekir ContentProvider.query aşağıdaki parametrelerle yöntemini:

  • Kurum: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI . Sorgu sütunları, CellBroadcast modülü için desteklenen mesaj özelliklerini listeler. İçin (Veritabanınızdan) verilerde Alır ContentProvider.query yöntemiyle.

İçin bir referans uygulaması için CellBroadcastContentProvider, bakın LegacyCellBroadcastContentProvider .

Test yapmak

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

OEM ise CMAS gizli kod etkin bir cihaz için, söz konusu cihaz aşağıdaki özelliklere sahip ayıklama modunu destekleyebilir.

  • Deney uyarıları açık / kapalı geçiş ile Diğer Uyarılar altında gruplandırılmıştı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.

Ayıklama modunu etkinleştirmek için, dial * # * # CMAS # * # * çeviricide.

Temas

Daha fazla detay veya CellBroadcast modülü hakkında sorular için temas CellBroadcast destek grubu .