โมดูล CellBroadcast ช่วยลดความซ้ำซ้อนสำหรับ OEM (ซึ่งจะช่วยลดการแยกส่วนในระบบนิเวศ Android และมอบลักษณะการทำงานที่สอดคล้องกันให้แก่ผู้ใช้ปลายทาง) และช่วยปรับปรุงการทดสอบและรับรองของผู้ให้บริการตามข้อกำหนดที่เกี่ยวข้องกับ CellBroadcast (เนื่องจาก OEM แก้ไขโค้ดไม่ได้) โมดูลนี้อัปเดตได้ ซึ่งหมายความว่าจะรับการอัปเดตฟังก์ชันการทำงานนอกรอบการเผยแพร่ปกติของ Android ได้
รูปแบบแพ็กเกจ
โมดูล CellBroadcast ประกอบด้วยบริการและแอปต่อไปนี้
บริการ CellBroadcastService รองรับการถอดรหัส SMS ของ CellBroadcast, การกําหนดเขตพื้นที่เสมือนสําหรับการแจ้งเตือนภัยพิบัติทางอากาศ (WEA) 3.0, การตรวจสอบข้อความที่ซ้ำกัน และการกระจายข้อความไปยังแอป ซึ่งเป็นบริการรับส่งข้อความแบบ 1: หลายคนที่กำหนดเป้าหมายตามภูมิศาสตร์และกำหนดเขตพื้นที่เสมือน ซึ่งออกแบบมาเพื่อส่งข้อความถึงผู้ใช้โทรศัพท์มือถือหลายคนในพื้นที่ที่กำหนดพร้อมกัน บริการนี้กำหนดโดยคณะกรรมการ GSM ของ ETSI และ 3GPP และเป็นส่วนหนึ่งของมาตรฐานการสื่อสารโทรคมนาคม
แอป CellBroadcastReceiver เป็นแอประบบเริ่มต้นที่จัดการการแจ้งเตือนเหตุฉุกเฉินและไม่ฉุกเฉิน (เช่น การแจ้งเตือน Amber และการแจ้งเตือนประธานาธิบดี) และแสดงข้อมูลต่อผู้ใช้ปลายทางตามกฎระเบียบของผู้ให้บริการและระดับภูมิภาค
ขั้นตอนการส่งข้อความ CellBroadcast
รูปภาพต่อไปนี้แสดงขั้นตอนการส่งข้อความของ CellBroadcast
รูปที่ 1 ขั้นตอนการรับส่งข้อความของ CellBroadcastReceiver
เลเยอร์อินเทอร์เฟซวิทยุ (RIL) จะแจ้งให้
InBoundSMSHandler
ทราบเกี่ยวกับ SMS การรับส่งข้อมูลแบบกลุ่มของ CDMA/GSMเฟรมเวิร์กจะส่งต่อ SMS สำหรับการกระจายข้อมูลทางมือถือไปยังโมดูล CBS เพื่อแยกวิเคราะห์และประมวลผลข้อความขาเข้า
หลังจากประมวลผลข้อความแล้ว CellBroadcastService จะส่งต่อ Intent ไปยังแอป CellBroadcastReceiver เริ่มต้นของระบบ
แอป CellBroadcastReceiver จะแสดงข้อความต่อผู้ใช้
รูปแบบโมดูล
แอป CellBroadcastService และ CellBroadcastReceiver จะรวมอยู่ในไฟล์ APEX ไฟล์เดียว (com.android.cellbroadcast
) ซึ่งพร้อมใช้งานสำหรับอุปกรณ์ที่ใช้ Android 11 ขึ้นไป โมดูลนี้มีโค้ดใน
package/app/CellBroadcastReceiver
และย้ายข้อมูลคลาสเฟรมเวิร์กที่มีอยู่ไปยัง
packages/modules/CellBroadcastService
ทรัพยากร Dependency ของโมดูล
โมดูล CellBroadcast จะโต้ตอบกับเฟรมเวิร์กโดยใช้ @SystemApi
(ไม่มี @hide
API) ที่เสถียรเท่านั้น และขึ้นอยู่กับไลบรารีแบบคงที่ต่อไปนี้
Androidx.legacy_legacy-support-v13
Androidx.recyclerview_recyclerview
Androidx.preference_preference
androidx.legacy_legacy-preference-v14
androidx.appcompat_appcompat
คุณปรับแต่งการกำหนดค่าได้โดยใช้การวางซ้อนทรัพยากรรันไทม์ (RRO)
การกำหนดค่าสิทธิ์
โมดูล CellBroadcast ได้รับการรับรองด้วยลายเซ็นของ Google แทนลายเซ็นของแพลตฟอร์ม ซึ่งหมายความว่าโมดูลจะเสียสิทธิ์เข้าถึงลายเซ็น
แต่ Android 11 จะกำหนดสิทธิ์ลายเซ็นใหม่ com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
ไว้ในโมดูล CellBroadcast แทน โดยจะมีเพียงแพ็กเกจในโมดูลเท่านั้นที่จะได้รับสิทธิ์นี้เนื่องจากมีการรับรองด้วยคีย์เดียวกัน สิทธิ์นี้ช่วยให้แอป CellBroadcastReceiver มีสิทธิ์เข้าถึงฐานข้อมูลใน CellBroadcastService โดยสมบูรณ์
แพลตฟอร์มจะให้สิทธิ์รันไทม์ android.permission.READ_CELL_BROADCASTS
แก่แอป SMS เริ่มต้นของระบบเพื่อเข้าถึงประวัติการแจ้งเตือนเหตุฉุกเฉิน
ผสานรวมโมดูล CellBroadcast
ส่วนนี้จะอธิบายวิธีผสานรวมโมดูล CellBroadcast
ผสานรวมกับการตั้งค่า
คุณเลือกตำแหน่งที่จะผสานรวมการตั้งค่า CellBroadcast ได้ในแอปการตั้งค่า (ผู้ใช้ปลายทางเข้าถึงหน้าการตั้งค่า CellBroadcast ได้จากการตั้งค่า > แอปและการแจ้งเตือน > ขั้นสูง > การแจ้งเตือนเหตุฉุกเฉิน) หากต้องการเปิดแอป 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 Messaging ฟีเจอร์นี้ผสานรวมอยู่ในการตั้งค่า > ขั้นสูง > การแจ้งเตือนเหตุฉุกเฉิน หากต้องการผสานรวมลิงก์ในแอปการรับส่งข้อความของคุณเอง ให้กำหนดเส้นทางในแอปการรับส่งข้อความและกำหนดค่าชื่อคอมโพเนนต์สำหรับโมดูล CellBroadcast เป็น com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
ผสานรวมกับกล่องจดหมาย SMS
คุณสามารถเปิดใช้การแสดงข้อความ CellBroadcast ในแอปการรับส่งข้อความเริ่มต้นได้โดยลบล้างการกำหนดค่าต่อไปนี้โดยใช้การวางซ้อนทรัพยากรรันไทม์
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
เนื่องจากการให้สิทธิ์อยู่นอกขอบเขตของโมดูล CellBroadcast คุณจึงต้องให้สิทธิ์ AppOpsManager.OP_WRITE_SMS
แก่โมดูล CellBroadcast เพื่อให้การสนับสนุนจากต้นทางถึงปลายทาง สําหรับการใช้งานตามข้อมูลอ้างอิงของ AOSP ให้ดูSmsApplication.java
แพตช์นี้
เปิดแอป CellBroadcastReceiver
แอป CellBroadcastReceiver มีจุดเริ่มต้นดังต่อไปนี้
เมนูแอปการตั้งค่า
แอป (รวมถึงแอปของบุคคลที่สาม) เช่น แอปรับส่งข้อความที่ลิงก์กับประวัติข้อความของ CellBroadcast
(ไม่บังคับ) ไอคอนเปิดจากหน้าจอหลักของ Android ที่ OEM เพิ่ม โปรดดูรายละเอียดที่หัวข้อการเพิ่มไอคอนเปิด
การตั้งค่าแอป CellBroadcastReceiver
ภาพหน้าจอต่อไปนี้แสดงเมนูการตั้งค่าแอป CellBroadcastReceiver
รูปที่ 2 เมนูการตั้งค่าแอป CellBroadcastReceiver
รูปที่ 3 หน้าจอประวัติการแจ้งเตือนเหตุฉุกเฉิน
เพิ่มไอคอนเปิดใช้งาน
คุณสามารถเปิดใช้การเข้าถึงประวัติข้อความ CellBroadcast จากตัวเปิดแอป และผ่านไอคอนเปิดของคุณเอง
หากต้องการเปิดใช้การเข้าถึงประวัติข้อความจากตัวเปิดแอป ให้ลบล้างการกำหนดค่าต่อไปนี้โดยใช้ 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 ในแอฟริกาใต้) สำหรับแชแนลนี้ ข้อความประกาศจะไม่แสดงกล่องโต้ตอบหรือการแจ้งเตือน แต่ข้อความที่ออกอากาศจะปรากฏในสถานะ SIM ของเมนูการตั้งค่าหรือในแถบสถานะ (เช่น การแสดงรหัสไปรษณีย์)
การใช้งาน 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 โปรดติดต่อกลุ่มสนับสนุนของ CellBroadcast
ย้ายข้อมูล
Android 11 มีแอป CellBroadcast รุ่นเดิม ซึ่งเป็นกลไกในการเก็บรักษาและย้ายข้อมูลแอป (รวมถึงการตั้งค่าของผู้ใช้และประวัติการแจ้งเตือนเหตุฉุกเฉิน) สำหรับอุปกรณ์ที่อัปเกรดเป็นโมดูล CellBroadcast การใช้งาน Android ที่ใช้โมดูล CellBroadcast ควรรวมแอป CellBroadcast รุ่นเดิมไว้ในบิลด์สำหรับการย้ายข้อมูล หากการใช้งานใช้โซลูชัน CellBroadcast ที่กําหนดเอง คุณควรกําหนด APK ของ CellBroadcastContentProvider เพื่อเก็บรักษาข้อมูล (คุณสามารถนํา APK ของ CellBroadcast รุ่นเดิมออกได้อย่างปลอดภัยในรุ่นถัดไป)
ในอุปกรณ์ที่อัปเกรดให้ใช้โมดูล CellBroadcast โมดูลจะดึงข้อมูลจาก AOSP LegacyCellBroadcastApp หรือ APK ของ CellBroadcastContentProvider ที่ OEM กำหนดผ่านcellbroadcast-legacy
สิทธิ์ที่ระบุไว้อย่างชัดเจน
ใช้ APK CellBroadcastContentProvider ที่ OEM กำหนด
เมื่อกำหนด APK ของ CellBroadcastContentProvider นั้น APK ต้องเป็นไปตามข้อกำหนดต่อไปนี้
APK นี้เป็น APK Headless ที่แสดงเฉพาะเนื้อหาของฐานข้อมูล และ
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
Arg:
@SystemAPI CellBroadcast.Preference
ต่อไปนี้คือรายการคีย์ค่ากำหนดที่แชร์ซึ่งรองรับสำหรับข้อบังคับของ CellBroadcast ข้อมูลมาจาก
SharedPreferences
สำหรับวิธีContentProvider.call
หากต้องการย้ายข้อมูลประวัติข้อความไปยังโมดูล CellBroadcast นั้น APK ของ CellBroadcastContentProvider ต้องรองรับเมธอด ContentProvider.query
ที่มีพารามิเตอร์ต่อไปนี้
- หน่วยงาน:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
คอลัมน์การค้นหาจะแสดงรายการพร็อพเพอร์ตี้ข้อความที่รองรับสำหรับโมดูล CellBroadcast รับข้อมูล (จากฐานข้อมูล) สําหรับเมธอดContentProvider.query
ดูการติดตั้งใช้งานอ้างอิงสำหรับ CellBroadcastContentProvider,
ได้ที่
LegacyCellBroadcastContentProvider
การทดสอบ
ชุดเครื่องมือทดสอบความเข้ากันได้ของ Android (CTS) จะยืนยันฟังก์ชันการทำงานของ API ของระบบที่อิงตามแอป นอกจากนี้ คุณยังเรียกใช้โมดูล CellBroadcast ได้อีกด้วย
unit tests/testappsp
หาก OEM ได้เปิดใช้รหัสลับ CMAS สำหรับอุปกรณ์ อุปกรณ์นั้นจะรองรับโหมดแก้ไขข้อบกพร่องด้วยฟีเจอร์ต่อไปนี้
การแจ้งเตือนการทดสอบจะจัดกลุ่มไว้ในส่วนการแจ้งเตือนอื่นๆ พร้อมปุ่มเปิด/ปิด
ประวัติจะรวมข้อความทั้งหมดที่ได้รับแต่ไม่แสดง เช่น ข้อความที่ซ้ำกันหรือข้อความในภาษาอื่น
ข้อความจะแสดงพารามิเตอร์ทั้งหมดที่ใช้ได้ ซึ่งรวมถึงหมายเลขซีเรียล รหัสข้อความ และวันที่หมดอายุ
หากต้องการเปิดใช้โหมดแก้ไขข้อบกพร่อง ให้กด *#*#CMAS#*#* บนแป้นโทรศัพท์
รายชื่อติดต่อ
หากต้องการรายละเอียดเพิ่มเติมหรือมีข้อสงสัยเกี่ยวกับโมดูล CellBroadcast โปรดติดต่อกลุ่มสนับสนุนของ CellBroadcast