การส่งข้อมูลเตือนภัยทางมือถือ (CB)

โมดูล CellBroadcast ช่วยลดความซ้ำซ้อนสำหรับ OEM (ซึ่งจะช่วยลดการแยกส่วนในระบบนิเวศ Android และมอบลักษณะการทำงานที่สอดคล้องกันให้แก่ผู้ใช้ปลายทาง) และช่วยปรับปรุงการทดสอบและรับรองของผู้ให้บริการตามข้อกำหนดที่เกี่ยวข้องกับ CellBroadcast (เนื่องจาก OEM แก้ไขโค้ดไม่ได้) โมดูลนี้อัปเดตได้ ซึ่งหมายความว่าจะรับการอัปเดตฟังก์ชันการทำงานนอกรอบการเผยแพร่ปกติของ Android ได้

รูปแบบแพ็กเกจ

โมดูล CellBroadcast ประกอบด้วยบริการและแอปต่อไปนี้

  • บริการ CellBroadcastService รองรับการถอดรหัส SMS ของ CellBroadcast, การกําหนดเขตพื้นที่เสมือนสําหรับการแจ้งเตือนภัยพิบัติทางอากาศ (WEA) 3.0, การตรวจสอบข้อความที่ซ้ำกัน และการกระจายข้อความไปยังแอป ซึ่งเป็นบริการรับส่งข้อความแบบ 1: หลายคนที่กำหนดเป้าหมายตามภูมิศาสตร์และกำหนดเขตพื้นที่เสมือน ซึ่งออกแบบมาเพื่อส่งข้อความถึงผู้ใช้โทรศัพท์มือถือหลายคนในพื้นที่ที่กำหนดพร้อมกัน บริการนี้กำหนดโดยคณะกรรมการ GSM ของ ETSI และ 3GPP และเป็นส่วนหนึ่งของมาตรฐานการสื่อสารโทรคมนาคม

  • แอป CellBroadcastReceiver เป็นแอประบบเริ่มต้นที่จัดการการแจ้งเตือนเหตุฉุกเฉินและไม่ฉุกเฉิน (เช่น การแจ้งเตือน Amber และการแจ้งเตือนประธานาธิบดี) และแสดงข้อมูลต่อผู้ใช้ปลายทางตามกฎระเบียบของผู้ให้บริการและระดับภูมิภาค

โฟลว์ข้อความ CellBroadcast

รูปภาพต่อไปนี้แสดงขั้นตอนการส่งข้อความ CellBroadcast

ขั้นตอนการรับส่งข้อความของ CellBroadcastReceiver

รูปที่ 1 ขั้นตอนการรับส่งข้อความของ CellBroadcastReceiver

  1. เลเยอร์อินเทอร์เฟซวิทยุ (RIL) จะแจ้งให้ InBoundSMSHandler ทราบเกี่ยวกับ SMS การรับส่งข้อมูลแบบกลุ่มของ CDMA/GSM

  2. เฟรมเวิร์กจะส่งต่อ SMS สำหรับการกระจายข้อมูลทางมือถือไปยังโมดูล CBS เพื่อแยกวิเคราะห์และประมวลผลข้อความขาเข้า

  3. หลังจากประมวลผลข้อความแล้ว CellBroadcastService จะส่งต่อ Intent ไปยังแอป CellBroadcastReceiver เริ่มต้นของระบบ

  4. แอป 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

ผสานรวมกับการตั้งค่า

คุณเลือกตำแหน่งที่จะผสานรวมการตั้งค่าการแจ้งเตือนทาง SMS ในแอปการตั้งค่าได้ (ผู้ใช้ปลายทางเข้าถึงหน้าการตั้งค่าการแจ้งเตือนทาง SMS ได้จากการตั้งค่า > แอปและการแจ้งเตือน > ขั้นสูง > การแจ้งเตือนเหตุฉุกเฉิน) หากต้องการเปิดแอป 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

เมนูการตั้งค่าแอป 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 ซึ่งสามารถโฮสต์สคีมา 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