โมดูลการออกอากาศทางโทรศัพท์มือถือช่วยลดความพยายามที่ซ้ำซ้อนสำหรับ OEM (ซึ่งจะช่วยลดการกระจายตัวทั่วทั้งระบบนิเวศของ Android และมอบลักษณะการทำงานที่สอดคล้องกันแก่ผู้ใช้ปลายทาง) และช่วยเพิ่มประสิทธิภาพการทดสอบและการรับรองของผู้ให้บริการสำหรับข้อกำหนดที่เกี่ยวข้องกับการออกอากาศทางโทรศัพท์มือถือ (เนื่องจาก OEM ไม่สามารถแก้ไขโค้ดได้) โมดูลนี้อัปเดตได้ ซึ่งหมายความว่าสามารถรับการอัปเดตฟังก์ชันการทำงานนอกรอบการเปิดตัว Android ปกติได้
รูปแบบแพ็กเกจ
โมดูลการออกอากาศทางโทรศัพท์มือถือประกอบด้วยบริการและแอปต่อไปนี้
บริการ CellBroadcastService รองรับการถอดรหัส SMS ที่ส่งข้อมูลเตือนภัยทางมือถือ การกำหนดขอบเขตทางภูมิศาสตร์สำหรับการแจ้งเตือนฉุกเฉินแบบไร้สาย (WEA) 3.0 การตรวจสอบข้อความที่ซ้ำกัน และการออกอากาศข้อความไปยังแอป เป็นบริการส่งข้อความแบบระบุพิกัดทางภูมิศาสตร์และกำหนดขอบเขตทางภูมิศาสตร์แบบหนึ่งต่อหลายรายการ ซึ่งออกแบบมาเพื่อส่งข้อความถึงผู้ใช้โทรศัพท์มือถือหลายรายในพื้นที่ที่กำหนดพร้อมกัน บริการนี้กำหนดโดย คณะกรรมการ GSM ของ ETSI 3GPP และเป็นส่วนหนึ่งของ มาตรฐานการสื่อสารโทรคมนาคม
แอป CellBroadcastReceiver เป็นแอปของระบบเริ่มต้นที่จัดการ การแจ้งเตือนฉุกเฉินและที่ไม่ใช่การแจ้งเตือนฉุกเฉิน (เช่น การแจ้งเตือนสีเหลืองและการแจ้งเตือนจากประธานาธิบดี) และ แสดงข้อมูลต่อผู้ใช้ปลายทางตามกฎระเบียบของผู้ให้บริการและระดับภูมิภาค
ขั้นตอนการส่งข้อความการส่งข้อมูลเตือนภัยทางมือถือ (CB)
รูปที่ 1 แสดงโฟลว์ของข้อความ CellBroadcast
รูปที่ 1 ขั้นตอนการทำงานของข้อความ CellBroadcastReceiver
เลเยอร์อินเทอร์เฟซวิทยุ (RIL) จะแจ้ง
InBoundSMSHandler
เกี่ยวกับ SMS การออกอากาศทางมือถือ CDMA/GSMเฟรมเวิร์กจะส่งต่อ SMS จากการส่งข้อมูลเตือนภัยทางมือถือ (CB) ไปยังโมดูล CBS เพื่อแยกวิเคราะห์และ ประมวลผลข้อความขาเข้า
หลังจากประมวลผลข้อความแล้ว CellBroadcastService จะส่งต่อ Intent ไปยัง แอป CellBroadcastReceiver เริ่มต้นของระบบ
แอป CellBroadcastReceiver จะแสดงข้อความต่อผู้ใช้
รูปแบบโมดูล
CellBroadcastService และแอป CellBroadcastReceiver จะรวมอยู่ในไฟล์ APEX ไฟล์เดียว
(com.android.cellbroadcast
) ซึ่งพร้อมใช้งานสำหรับอุปกรณ์ที่ใช้ Android 11 ขึ้นไป โมดูลมีโค้ดใน
package/app/CellBroadcastReceiver
และย้ายข้อมูลคลาสเฟรมเวิร์กที่มีอยู่ไปยัง
packages/modules/CellBroadcastService
ทรัพยากร Dependency ของโมดูล
โมดูลการออกอากาศทางโทรศัพท์มือถือจะโต้ตอบกับเฟรมเวิร์กโดยใช้เฉพาะ API ที่เสถียร
@SystemApi
(ไม่มี API @hide
) และขึ้นอยู่กับไลบรารีแบบคงที่ต่อไปนี้
Androidx.legacy_legacy-support-v13
Androidx.recyclerview_recyclerview
Androidx.preference_preference
androidx.legacy_legacy-preference-v14
androidx.appcompat_appcompat
คุณปรับแต่งการกำหนดค่าได้โดยใช้การซ้อนทับทรัพยากรขณะรันไทม์ (RRO)
การกำหนดค่าสิทธิ์
โมดูลการออกอากาศทางมือถือได้รับการลงนามด้วยลายเซ็นของ Google แทนลายเซ็นของแพลตฟอร์ม
ซึ่งหมายความว่าโมดูลจะสูญเสียสิทธิ์เข้าถึงลายเซ็น
แต่ Android 11 จะกำหนดสิทธิ์ลายเซ็นใหม่ com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
ภายในโมดูลการออกอากาศทางโทรศัพท์มือถือ โดยมีเพียงแพ็กเกจในโมดูลเท่านั้นที่จะได้รับสิทธิ์
เนื่องจากแพ็กเกจเหล่านั้นได้รับการลงนามด้วยคีย์เดียวกัน สิทธิ์นี้อนุญาตให้แอป
CellBroadcastReceiver เข้าถึงฐานข้อมูลภายใน
CellBroadcastService ได้อย่างเต็มที่
แพลตฟอร์มจะให้สิทธิ์รันไทม์ android.permission.READ_CELL_BROADCASTS
แก่แอป SMS ของระบบเริ่มต้นสำหรับการเข้าถึงประวัติการแจ้งเตือน
ฉุกเฉิน
ผสานรวมโมดูล CellBroadcast
ส่วนนี้จะอธิบายวิธีผสานรวมโมดูล CellBroadcast
ผสานรวมกับการตั้งค่า
คุณสามารถกำหนดตำแหน่งที่จะผสานรวมการตั้งค่า Cell Broadcast ในแอปการตั้งค่าได้
(ผู้ใช้ปลายทางจะเข้าถึงหน้าการตั้งค่า Cell Broadcast ได้จากการตั้งค่า >
แอปและการแจ้งเตือน > ขั้นสูง > การแจ้งเตือนฉุกเฉิน) หากต้องการเปิดแอป CellBroadcastReceiver จากแอปการตั้งค่า ให้เปลี่ยนการกำหนดค่าการตั้งค่าต่อไปนี้ด้วยชื่อแพ็กเกจ com.android.cellbroadcastreceiver
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
ผสานรวมกับแอปรับส่งข้อความ
คุณสามารถผสานรวม App Link เข้ากับแอปรับส่งข้อความเพื่อเปิดประวัติข้อความ Cell Broadcast
ได้ ในแอปข้อความของ Android เราได้รวมฟีเจอร์นี้ไว้ในการตั้งค่า > ขั้นสูง > การแจ้งเหตุฉุกเฉิน หากต้องการผสานรวมลิงก์ในแอปส่งข้อความของคุณเอง ให้กำหนดเส้นทางในแอปส่งข้อความและกำหนดค่าชื่อคอมโพเนนต์สำหรับโมดูล CellBroadcast เป็น com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
ผสานรวมกับกล่องจดหมาย SMS
คุณเปิดใช้การแสดงข้อความ Cell Broadcast ในแอปรับส่งข้อความเริ่มต้นได้โดย ลบล้างการกำหนดค่าต่อไปนี้โดยใช้การวางซ้อนทรัพยากรขณะรันไทม์
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
เนื่องจากการให้สิทธิ์อยู่นอกขอบเขตของโมดูล CellBroadcast
คุณจึงต้องให้สิทธิ์ AppOpsManager.OP_WRITE_SMS
แก่โมดูล CellBroadcast
เพื่อรับการสนับสนุนแบบครบวงจร สำหรับการติดตั้งใช้งานอ้างอิงของ AOSP
โปรดดูแพตช์SmsApplication.java
นี้
เปิดแอป CellBroadcastReceiver
แอป CellBroadcastReceiver มีจุดเปิดตัวต่อไปนี้
เมนูแอปการตั้งค่า
แอป (รวมถึงแอปของบุคคลที่สาม) เช่น แอปข้อความที่ลิงก์ไปยัง ประวัติข้อความ Cell Broadcast
(ไม่บังคับ) ไอคอนเปิดจากหน้าจอหลักของ Android ที่ OEM เพิ่ม โปรดดูรายละเอียดที่หัวข้อการเพิ่มไอคอนเปิดแอป
การตั้งค่าแอป CellBroadcastReceiver
ภาพหน้าจอต่อไปนี้แสดงเมนูการตั้งค่าแอป CellBroadcastReceiver
รูปที่ 2 เมนูการตั้งค่าแอป CellBroadcastReceiver
รูปที่ 3 หน้าจอประวัติการแจ้งเตือนเหตุฉุกเฉิน
เพิ่มไอคอนเปิดแอป
คุณเปิดใช้การเข้าถึงประวัติข้อความ Cell Broadcast ได้จากตัวเรียกใช้แอป และผ่านไอคอนเปิดใช้ของคุณเอง
หากต้องการเปิดใช้การเข้าถึงประวัติข้อความจากตัวเรียกใช้แอป ให้ลบล้างการกำหนดค่าต่อไปนี้โดยใช้ RRO
<item type="bool" name="show_message_history_in_launcher" />
หากต้องการลบล้างไอคอนเริ่มต้นของ AOSP ให้ลบล้างการกำหนดค่าต่อไปนี้โดยใช้ RRO
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
เปิดใช้รหัสลับ CMAS
หากต้องการเปิดใช้รหัสลับ CMAS *#*#CMAS#*#* (*#*#2627#*#* ในแป้นโทร) แอปโทรออกต้องรอฟังรหัสโทรออกพิเศษในรูปแบบ *#*#code#*#* และจัดการโค้ดโดยใช้วิธีการสาธารณะ sendDialerSpecialCode
ข้อกำหนดเกี่ยวกับข้อมูลพื้นที่: ช่อง 50
ช่อง 50 เป็นช่องพิเศษสำหรับผู้ให้บริการในการออกอากาศข้อมูลที่เกี่ยวข้องกับพื้นที่ (ยกเว้น MTN ในแอฟริกาใต้) สำหรับช่องนี้ ข้อความออกอากาศ จะไม่ทำให้เกิดกล่องโต้ตอบหรือการแจ้งเตือน แต่ข้อความออกอากาศจะปรากฏในสถานะซิมของเมนูการตั้งค่าหรือในแถบสถานะ (เช่น แสดงรหัสไปรษณีย์)
การติดตั้งใช้งาน CellBroadcastService ของ Android รองรับ API ต่อไปนี้ในบริการการส่งข้อมูลเตือนภัยทางมือถือสำหรับแอปการตั้งค่าและ SysUI เพื่อรับข้อมูลช่อง 50 ที่ออกอากาศ หากต้องการใช้ฟีเจอร์นี้ ให้ทำดังนี้
ลงทะเบียนการออกอากาศ
android.telephony.action.AREA_INFO_UPDATED
และลบล้าง ชื่อแพ็กเกจตัวรับconfig_area_info_receiver_packages
ผ่าน RROเชื่อมโยงกับ
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
เนื่องจากแอปการตั้งค่าและ SysUI อยู่นอกขอบเขตของโมดูล CellBroadcast คุณจึงต้องใช้การเปลี่ยนแปลงใน SystemUI หรือแอปการตั้งค่าเพื่อ ให้การสนับสนุนแบบครบวงจร ดูการติดตั้งใช้งานอ้างอิงได้ที่แอปการตั้งค่า CellBroadcastService
การปรับแต่ง
คุณไม่สามารถแก้ไขซอร์สโค้ดของโมดูล CellBroadcast ได้โดยตรง แต่
ใช้การวางซ้อนทรัพยากรขณะรันไทม์
(RRO) เพื่อ
เปิดใช้ (หรือปิดใช้) พารามิเตอร์
(เช่น คุณปรับแต่งสีของการแจ้งเตือนและ
ขนาดในกล่องโต้ตอบได้) หากต้องการลบล้างค่าเริ่มต้นของพารามิเตอร์ที่ใช้ใน
โมดูล CellBroadcast ให้เปลี่ยนชื่อแพ็กเกจเป้าหมายเป็น
com.android.cellbroadcastreceiver
นอกจากนี้:
ดูรายการการกำหนดค่าที่วางซ้อนได้ที่
overlayable.xml
ดูตัวอย่างการใช้งานได้ที่
RROSampleTestApp
ใน AOSP
หากการติดตั้งใช้งานไม่มีแหล่งข้อมูลการแปลสตริง UI หรือหากคำแปลไม่เป็นไปตามที่คาดไว้ คุณสามารถลบล้างแหล่งข้อมูลการแปลโดยใช้ RRO หรือทำงานร่วมกับทีมแปลของ Google เพื่อส่งต่อการแปลสตริงไปยังโมดูล CellBroadcast หากคุณลบล้างแหล่งข้อมูลการแปล
Google ต้องแสดงสตริงเหล่านั้นใน overlayable.xml
เพื่ออนุญาตให้
ลบล้าง หากต้องการการกำหนดค่าเพิ่มเติมสำหรับการปรับแต่ง UI โปรดติดต่อ
กลุ่มสนับสนุน Cell Broadcast
ย้ายข้อมูล
Android 11 มีแอป CellBroadcast รุ่นเดิม ซึ่งเป็นกลไกในการเก็บรักษาและย้ายข้อมูลแอป (รวมถึงการตั้งค่าของผู้ใช้และประวัติการแจ้งเตือนฉุกเฉิน) สำหรับอุปกรณ์ที่อัปเกรดเป็นโมดูล CellBroadcast การติดตั้งใช้งาน Android ที่ใช้โมดูล CellBroadcast ควรมีแอป CellBroadcast รุ่นเดิมในการสร้างสำหรับการย้ายข้อมูล หากการติดตั้งใช้งานของคุณใช้โซลูชันการออกอากาศทางโทรศัพท์มือถือที่กำหนดเอง คุณควรกำหนด APK ของ CellBroadcastContentProvider เพื่อเก็บรักษาข้อมูล (คุณสามารถนำ APK ของการออกอากาศทางโทรศัพท์มือถือรุ่นเดิมออกได้อย่างปลอดภัยในการเปิดตัวครั้งต่อๆ ไป)
ในอุปกรณ์ที่อัปเกรดให้ใช้โมดูล CellBroadcast โมดูลจะดึงข้อมูล
จาก AOSP LegacyCellBroadcastApp หรือ
APK ของ CellBroadcastContentProvider ที่ OEM กำหนดผ่านcellbroadcast-legacy
Authority ที่กำหนดไว้อย่างดี
ใช้ APK ของ CellBroadcastContentProvider ที่ OEM กำหนด
เมื่อกำหนด APK ของ CellBroadcastContentProvider แล้ว APK ต้องเป็นไปตามข้อกำหนดต่อไปนี้
APK เป็น APK แบบไม่มีส่วนหัวที่แสดงเฉพาะเนื้อหาของฐานข้อมูล และ
SharedPreferences
ผ่านออบเจ็กต์ContentProvider
ที่มีสิทธิ์cellbroadcast-legacy
และแอปของบุคคลที่สามจะเข้าถึงไม่ได้OEM เป็นผู้พัฒนาและเป็นเจ้าของ APK โดย OEM จะยังคงโฮสต์สคีมา API ที่ซ่อนไว้ได้
หากต้องการย้ายข้อมูล SharedPreferences
ไปยังโมดูล CellBroadcast
APK ของ CellBroadcastContentProvider ต้องรองรับ
ContentProvider.call
)
เมธอดที่มีพารามิเตอร์ต่อไปนี้
- หน่วยงาน:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- วิธีการ:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
อาร์ก:
@SystemAPI CellBroadcast.Preference
นี่คือรายการคีย์การตั้งค่าที่แชร์ที่รองรับสำหรับโมดูล CellBroadcast ข้อมูลมาจาก
SharedPreferences
สำหรับเมธอดContentProvider.call
หากต้องการย้ายข้อมูลประวัติข้อความไปยังโมดูล CellBroadcast
APK ของ CellBroadcastContentProvider ต้องรองรับเมธอด
ContentProvider.query
ที่มีพารามิเตอร์ต่อไปนี้
- อำนาจหน้าที่:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
คอลัมน์การค้นหา แสดงรายการพร็อพเพอร์ตี้ข้อความที่รองรับสำหรับโมดูลการออกอากาศทางมือถือ รับข้อมูล (จากฐานข้อมูล) สำหรับวิธีการContentProvider.query
ดูการติดตั้งใช้งานอ้างอิงสำหรับ CellBroadcastContentProvider,
ได้ที่
LegacyCellBroadcastContentProvider
การทดสอบ
ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ของ Android จะตรวจสอบฟังก์ชันการทำงานของ
API ของระบบที่ขึ้นอยู่กับแอป นอกจากนี้ คุณยังเรียกใช้โมดูล CellBroadcast
unit tests/testappsp
ได้ด้วย
หาก OEM เปิดใช้รหัสลับ CMAS สำหรับอุปกรณ์ อุปกรณ์นั้นจะรองรับโหมดแก้ไขข้อบกพร่องที่มีฟีเจอร์ต่อไปนี้
การแจ้งเตือนการทดสอบจะจัดกลุ่มไว้ในการแจ้งเตือนอื่นๆ พร้อมปุ่มเปิด/ปิด
ประวัติจะรวมข้อความทั้งหมดที่ได้รับแต่ไม่ได้แสดง เช่น ข้อความที่ซ้ำกันหรือข้อความในภาษาอื่น
ข้อความจะแสดงพารามิเตอร์ทั้งหมดที่ใช้ได้ รวมถึงหมายเลขซีเรียล, รหัสข้อความ และวันที่หมดอายุ
หากต้องการเปิดใช้โหมดแก้ไขข้อบกพร่อง ให้กด *#*#CMAS#*#* ในแป้นโทร
รายชื่อติดต่อ
หากต้องการรายละเอียดเพิ่มเติมหรือมีคำถามเกี่ยวกับโมดูล CellBroadcast โปรดติดต่อ กลุ่มสนับสนุน CellBroadcast