Siaran Sel

Modul CellBroadcast mengurangi upaya berulang untuk OEM (yang pada gilirannya mengurangi fragmentasi di seluruh ekosistem Android dan memberikan perilaku yang konsisten kepada pengguna akhir) dan membantu menyederhanakan pengujian dan sertifikasi operator untuk persyaratan terkait CellBroadcast (karena kode tidak dapat dimodifikasi oleh OEM ). Modul ini dapat diperbarui, artinya dapat menerima pembaruan fungsi di luar siklus rilis normal Android.

Format paket

Modul CellBroadcast terdiri dari layanan dan aplikasi berikut.

  • Layanan CellBroadcastService mendukung decoding SMS CellBroadcast, geofencing untuk peringatan darurat nirkabel (WEA) 3.0, pemeriksaan duplikasi pesan, dan menyiarkan pesan ke aplikasi. Ini adalah layanan perpesanan bertarget geografis dan bergeofen satu-ke-banyak yang dirancang untuk mengirimkan pesan ke beberapa pengguna ponsel, di area tertentu, pada waktu yang sama. Layanan ini ditentukan oleh komite ETSI GSM, 3GPP , dan merupakan bagian dari standar telekomunikasi.

  • Aplikasi CellBroadcastReceiver adalah aplikasi sistem default yang menangani peringatan darurat dan non-darurat (seperti peringatan kuning dan presiden) dan menyajikan informasi kepada pengguna akhir berdasarkan peraturan operator dan regional.

Alur pesan CellBroadcast

Gambar berikut menunjukkan alur pesan CellBroadcast.

Alur pesan CellBroadcastReceiver

Gambar 1. Alur pesan CellBroadcastReceiver

  1. Lapisan antarmuka radio (RIL) memberi tahu InBoundSMSHandler tentang SMS CellBroadcast CDMA/GSM.

  2. Kerangka kerja meneruskan SMS CellBroadcast ke modul CBS untuk menguraikan dan memproses pesan masuk.

  3. Setelah pesan diproses, CellBroadcastService meneruskan maksud ke aplikasi CellBroadcastReceiver default sistem.

  4. Aplikasi CellBroadcastReceiver menampilkan pesan kepada pengguna.

Format modul

CellBroadcastService dan aplikasi CellBroadcastReceiver disertakan dalam satu file APEX ( com.android.cellbroadcast ), yang tersedia untuk perangkat yang menjalankan Android 11 atau lebih tinggi. Modul ini menyertakan kode dalam package/app/CellBroadcastReceiver dan memigrasikan kelas kerangka kerja yang ada ke packages/modules/CellBroadcastService .

Ketergantungan modul

Modul CellBroadcast berinteraksi dengan kerangka kerja hanya menggunakan @SystemApi yang stabil (tanpa @hide API) dan bergantung pada pustaka statis berikut.

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

Anda dapat menyesuaikan konfigurasi menggunakan runtime resource overlay (RROs) .

Konfigurasi izin

Modul CellBroadcast ditandatangani dengan tanda tangan Google, bukan tanda tangan platform, yang berarti modul kehilangan akses ke izin tanda tangan. Sebaliknya, Android 11 mendefinisikan izin tanda tangan baru com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY di dalam modul CellBroadcast; hanya paket dalam modul yang dapat memperoleh izin karena ditandatangani dengan kunci yang sama. Izin ini memungkinkan aplikasi CellBroadcastReceiver memiliki akses penuh ke database di dalam CellBroadcastService.

Platform ini memberikan izin runtime android.permission.READ_CELL_BROADCASTS ke aplikasi SMS sistem default untuk mengakses riwayat peringatan darurat.

Mengintegrasikan modul CellBroadcast

Bagian ini menjelaskan cara mengintegrasikan modul CellBroadcast.

Mengintegrasikan dengan Pengaturan

Anda dapat memutuskan tempat untuk mengintegrasikan pengaturan CellBroadcast di aplikasi Pengaturan (pengguna akhir mengakses halaman pengaturan CellBroadcast dari Pengaturan > Aplikasi & Pemberitahuan > Lanjutan > Peringatan darurat ). Untuk meluncurkan aplikasi CellBroadcastReceiver dari aplikasi Pengaturan, ubah konfigurasi pengaturan berikut dengan nama paket com.android.cellbroadcastreceiver .

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

Terintegrasi dengan aplikasi perpesanan

Anda dapat mengintegrasikan tautan aplikasi ke dalam aplikasi perpesanan untuk membuka riwayat pesan CellBroadcast. Di aplikasi Android Messaging, ini telah diintegrasikan ke dalam Settings > Advanced > Emergency alert . Untuk mengintegrasikan tautan di aplikasi perpesanan Anda sendiri, tentukan jalur di aplikasi perpesanan dan konfigurasikan nama komponen untuk modul CellBroadcast sebagai com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity .

Terintegrasi dengan kotak masuk SMS

Anda dapat mengaktifkan tampilan pesan CellBroadcast di aplikasi perpesanan default dengan mengganti konfigurasi berikut menggunakan hamparan sumber daya runtime.

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

Karena pemberian izin berada di luar cakupan modul CellBroadcast, Anda harus memberikan izin AppOpsManager.OP_WRITE_SMS ke modul CellBroadcast untuk memberikan dukungan end-to-end. Untuk implementasi referensi AOSP, lihat patch SmsApplication.java ini .

Meluncurkan aplikasi CellBroadcastReceiver

Aplikasi CellBroadcastReceiver memiliki titik peluncuran berikut.

  • Menu aplikasi Pengaturan.

  • Sebuah aplikasi (termasuk aplikasi pihak ketiga) seperti aplikasi pesan yang tertaut ke riwayat pesan CellBroadcast.

  • (Opsional) Ikon peluncuran dari layar beranda Android yang ditambahkan oleh OEM. Untuk detailnya, lihat Menambahkan ikon peluncuran .

Pengaturan aplikasi CellBroadcastReceiver

Tangkapan layar berikut menunjukkan menu pengaturan aplikasi CellBroadcastReceiver.

Menu pengaturan aplikasi CellBroadcastReceiver

Gambar 2. Menu pengaturan aplikasi CellBroadcastReceiver

Riwayat peringatan darurat

Gambar 3. Layar riwayat peringatan darurat

Menambahkan ikon peluncuran

Anda dapat mengaktifkan akses riwayat pesan CellBroadcast dari peluncur aplikasi dan melalui ikon peluncuran Anda sendiri.

  • Untuk mengaktifkan akses riwayat pesan dari peluncur aplikasi, ganti konfigurasi berikut menggunakan RRO.

    <item type="bool" name="show_message_history_in_launcher" />
    
  • Untuk mengganti ikon default AOSP, ganti konfigurasi berikut menggunakan RRO.

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

Mengaktifkan kode rahasia CMAS

Untuk mengaktifkan kode rahasia CMAS, *#*#CMAS#*#* ( *#*#2627#*#* pada papan tombol), aplikasi dialer harus mendengarkan kode dialer khusus dalam bentuk *#*# code #*#* dan tangani kode tersebut menggunakan metode publik sendDialerSpecialCode .

Persyaratan info area: Saluran 50

Saluran 50 adalah saluran khusus bagi operator untuk menyiarkan informasi terkait wilayah (kecuali MTN di Afrika Selatan). Untuk saluran ini, pesan siaran tidak menghasilkan dialog popup atau notifikasi. Sebaliknya, pesan siaran muncul di status SIM menu Pengaturan, atau di baris status (misalnya, menampilkan kode pos).

Implementasi Android CellBroadcastService menyediakan dukungan untuk API berikut dalam layanan siaran seluler untuk aplikasi Setelan dan SysUI guna mendapatkan informasi siaran Saluran 50. Untuk menerapkan ini, lakukan hal berikut:

  • Daftarkan siaran android.telephony.action.AREA_INFO_UPDATED dan ganti nama paket penerima config_area_info_receiver_packages melalui RRO.

  • Ikat ke CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE .

Karena aplikasi Pengaturan dan SysUI berada di luar cakupan modul CellBroadcast, Anda harus menerapkan perubahan di SystemUI atau aplikasi Pengaturan untuk memberikan dukungan menyeluruh. Untuk implementasi referensi, lihat aplikasi Pengaturan CellBroadcastService .

Menyesuaikan

Anda tidak dapat secara langsung mengubah kode sumber modul CellBroadcast, namun Anda dapat menggunakan runtime resource overlay (RRO) untuk mengaktifkan (atau menonaktifkan) parameter (misalnya, Anda dapat menyesuaikan warna notifikasi dan dimensi pada dialog). Untuk mengganti nilai default parameter yang digunakan dalam modul CellBroadcast, ubah nama paket target menjadi com.android.cellbroadcastreceiver . Selain itu:

Jika implementasi tidak memiliki sumber daya terjemahan string UI atau jika terjemahan tidak memenuhi harapan Anda, Anda dapat mengganti sumber daya terjemahan menggunakan RRO atau bekerja sama dengan tim terjemahan Google untuk meng-upstream terjemahan string ke modul CellBroadcast. Jika Anda mengganti sumber daya terjemahan, Google harus mengekspos string tersebut di overlayable.xml untuk memungkinkan penggantian. Jika Anda memerlukan lebih banyak konfigurasi untuk penyesuaian UI, hubungi grup dukungan CellBroadcast .

Memigrasikan data

Android 11 menyertakan aplikasi CellBroadcast lama, yang merupakan mekanisme untuk menyimpan dan memigrasikan data aplikasi (termasuk setelan pengguna dan riwayat peringatan darurat) untuk perangkat yang diupgrade ke modul CellBroadcast. Implementasi Android yang menggunakan modul CellBroadcast harus menyertakan aplikasi CellBroadcast lama dalam buildnya untuk migrasi data. Jika penerapan Anda menggunakan solusi CellBroadcast khusus, Anda harus menentukan APK CellBroadcastContentProvider untuk menyimpan data (Anda dapat dengan aman menghapus APK siaran seluler lama di rilis berikutnya).

Pada perangkat yang diupgrade untuk menggunakan modul CellBroadcast, modul mengambil data dari AOSP LegacyCellBroadcastApp atau APK CellBroadcastContentProvider yang ditentukan OEM melalui otoritas cellbroadcast-legacy yang ditentukan dengan baik.

Menggunakan APK CellBroadcastContentProvider yang ditentukan OEM

Saat menentukan APK CellBroadcastContentProvider, APK harus mengikuti spesifikasi berikut.

  • APK adalah APK tanpa kepala yang hanya menampilkan konten database dan SharedPreferences melalui objek ContentProvider dengan otoritas cellbroadcast-legacy , dan tidak dapat diakses oleh aplikasi pihak ketiga.

  • APK dikembangkan dan dimiliki oleh OEM, sehingga OEM dapat terus menghosting skema API tersembunyi mereka.

Untuk memigrasikan SharedPreferences ke modul CellBroadcast, APK CellBroadcastContentProvider harus mendukung metode ContentProvider.call ) dengan parameter berikut:

  • Otoritas: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • Metode: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • Arg: @SystemAPI CellBroadcast.Preference

    Ini adalah daftar kunci preferensi bersama yang didukung untuk modul CellBroadcast. Data berasal dari SharedPreferences untuk metode ContentProvider.call .

Untuk memigrasikan riwayat pesan ke modul CellBroadcast, APK CellBroadcastContentProvider harus mendukung metode ContentProvider.query dengan parameter berikut:

  • Otoritas: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI . Kolom kueri mencantumkan properti pesan yang didukung untuk modul CellBroadcast. Mengambil data (dari database Anda) untuk metode ContentProvider.query .

Untuk implementasi referensi CellBroadcastContentProvider, lihat LegacyCellBroadcastContentProvider .

Pengujian

Android Compatibility Test Suite (CTS) memverifikasi fungsionalitas API sistem yang bergantung pada aplikasi. Anda juga dapat menjalankan unit tests/testappsp .

Jika OEM telah mengaktifkan kode rahasia CMAS untuk suatu perangkat, perangkat tersebut dapat mendukung mode debug dengan fitur berikut.

  • Peringatan pengujian dikelompokkan dalam Peringatan Lainnya dengan tombol aktif/nonaktif.

  • Riwayat mencakup semua pesan yang diterima tetapi tidak ditampilkan, seperti pesan duplikat atau pesan dalam bahasa lain.

  • Pesan menampilkan semua parameter yang tersedia, termasuk nomor seri, ID pesan, dan tanggal kedaluwarsa.

Untuk mengaktifkan mode debug, tekan *#*#CMAS#*#* pada dialer.

Kontak

Untuk rincian lebih lanjut atau pertanyaan tentang modul CellBroadcast, hubungi grup dukungan CellBroadcast .