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 merampingkan pengujian dan sertifikasi operator untuk persyaratan terkait CellBroadcast (karena kode tidak dapat dimodifikasi oleh OEM ). Modul ini dapat diperbarui, artinya dapat menerima pembaruan untuk fungsionalitas di luar siklus rilis Android normal.

Format paket

Modul CellBroadcast terdiri dari layanan dan aplikasi berikut.

  • Layanan CellBroadcastService mendukung dekode SMS CellBroadcast, geofencing untuk peringatan darurat nirkabel (WEA) 3.0, pemeriksaan duplikasi pesan, dan menyiarkan pesan ke aplikasi. Ini adalah layanan pesan satu-ke-banyak dengan penargetan geografis dan pembatasan wilayah yang dirancang untuk mengirimkan pesan ke beberapa pengguna ponsel, di area yang ditentukan, pada saat yang bersamaan. Layanan ini ditentukan oleh komite GSM ETSI , 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.

Aliran pesan CellBroadcast

Gambar berikut menunjukkan aliran pesan CellBroadcast.

Aliran pesan CellBroadcastReceiver

Gambar 1. Aliran pesan CellBroadcastReceiver

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

  2. Framework meneruskan SMS CellBroadcast ke modul CBS untuk mengurai dan memproses pesan yang 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.google.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 overlays (RROs) .

Konfigurasi izin

Modul CellBroadcast ditandatangani dengan tanda tangan Google, bukan tanda tangan platform, yang berarti modul kehilangan akses ke izin tanda tangan. Sebagai gantinya, 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 memberikan izin waktu proses 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.google.android.cellbroadcastreceiver .

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

Mengintegrasikan 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 Pengaturan > Lanjutan > Peringatan darurat . Untuk mengintegrasikan tautan di aplikasi perpesanan Anda sendiri, tentukan jalur di aplikasi perpesanan dan konfigurasikan nama komponen untuk modul CellBroadcast sebagai com.google.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity .

Mengintegrasikan dengan kotak masuk SMS

Anda dapat mengaktifkan menampilkan pesan CellBroadcast di aplikasi perpesanan default dengan mengganti konfigurasi berikut menggunakan overlay 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 menyeluruh. Untuk implementasi referensi AOSP, lihat patch SmsApplication.java ini .

Meluncurkan aplikasi CellBroadcastReceiver

Aplikasi CellBroadcastReceiver memiliki titik peluncuran berikut.

  • Menu aplikasi Pengaturan.

  • 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 pengaksesan riwayat pesan dari peluncur aplikasi, timpa konfigurasi berikut menggunakan RRO.

    <item type="bool" name="show_message_history_in_launcher" />
    
  • Untuk mengganti ikon default AOSP, timpa 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 berupa *#*# code #*#* dan tangani kode menggunakan metode publik sendDialerSpecialCode .

Persyaratan info area: Saluran 50

Saluran 50 adalah saluran khusus bagi operator untuk menyiarkan informasi terkait area (kecuali MTN di Afrika Selatan). Untuk saluran ini, pesan siaran tidak menghasilkan dialog atau pemberitahuan munculan. Sebagai gantinya, pesan siaran muncul di status SIM menu Pengaturan, atau di bilah status (misalnya, menampilkan kode pos).

Implementasi Android CellBroadcastService menyediakan dukungan untuk API berikut dalam layanan siaran seluler untuk aplikasi Pengaturan dan SysUI untuk mendapatkan informasi Saluran 50 siaran. 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, tetapi Anda dapat menggunakan overlay sumber daya runtime (RRO) untuk mengaktifkan (atau menonaktifkan) parameter (misalnya, Anda dapat menyesuaikan warna pemberitahuan dan dimensi pada dialog). Untuk mengganti nilai default parameter yang digunakan dalam modul CellBroadcast, ubah nama paket target menjadi com.google.android.cellbroadcastreceiver . Sebagai tambahan:

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 dengan tim terjemahan Google untuk meningkatkan terjemahan string ke modul CellBroadcast. Jika Anda mengganti sumber terjemahan, Google harus mengekspos string tersebut di overlayable.xml untuk mengizinkan penggantian. Jika Anda memerlukan lebih banyak konfigurasi untuk penyesuaian UI, hubungi grup dukungan CellBroadcast .

Migrasi 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 versinya untuk migrasi data. Jika implementasi Anda menggunakan solusi CellBroadcast kustom, Anda harus menentukan APK CellBroadcastContentProvider untuk mempertahankan data (Anda dapat menghapus APK siaran seluler lama dengan aman di rilis berikutnya).

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

Menggunakan APK CellBroadcastContentProvider yang ditentukan OEM

Saat menentukan APK CellBroadcastContentProvider, APK harus mengikuti spesifikasi ini.

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

  • APK dikembangkan dan dimiliki oleh OEM, di mana 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
  • Argumen : @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 untuk CellBroadcastContentProvider, lihat LegacyCellBroadcastContentProvider .

Pengujian

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

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

  • Lansiran pengujian dikelompokkan di bawah Lansiran Lain 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 detail lebih lanjut atau pertanyaan tentang modul CellBroadcast, hubungi grup dukungan CellBroadcast .