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

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

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

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

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

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

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

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

ขั้นตอนข้อความ CellBroadcastReceiver

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

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

  2. เฟรมเวิร์กส่งต่อ SMS CellBroadcast 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 (ไม่มี API @hide) และขึ้นอยู่กับไลบรารีแบบคงที่ต่อไปนี้

  • 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>

ผสานรวมกับแอปรับส่งข้อความ

คุณสามารถผสานรวมลิงก์แอปเข้ากับแอปรับส่งข้อความเพื่อเปิด CellBroadcast ได้ ประวัติข้อความ ในแอปการรับส่งข้อความของ Android เราได้ผสานรวมเข้ากับ การตั้งค่า > ขั้นสูง > การแจ้งเตือนฉุกเฉิน วิธีผสานรวมลิงก์ใน แอปรับส่งข้อความของคุณเอง กำหนดเส้นทางในแอปรับส่งข้อความและกำหนดค่า ชื่อคอมโพเนนต์สำหรับโมดูล 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 ในแอฟริกาใต้) สำหรับช่องนี้ ให้ประกาศ ข้อความจะไม่แสดงผลในกล่องโต้ตอบหรือการแจ้งเตือน แต่ให้ประกาศ ข้อความจะปรากฏในสถานะซิมของเมนูการตั้งค่าหรือในแถบสถานะ (สำหรับ เช่น แสดงรหัสไปรษณีย์)

การใช้งาน CellBroadcastService บน Android ให้การสนับสนุนสำหรับ API ต่อไปนี้ในบริการการส่งข้อมูลเตือนภัยทางมือถือ (CB) สำหรับการตั้งค่าและแอป 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 ที่กำหนดเองได้ คุณควรกำหนด CellBroadcastContentProvider APK เพื่อเก็บรักษาข้อมูล (คุณสามารถนำ APK การส่งข้อมูลเตือนภัยทางมือถือ (CB) เดิมในรุ่นต่อมา)

ในอุปกรณ์ที่อัปเกรดเพื่อใช้โมดูล CellBroadcast โมดูลจะดึงข้อมูล จาก AOSP LegacyCellBroadcastApp หรือ APK ของ CellBroadcastContentProvider ที่ OEM กำหนดผ่าน หน่วยงาน cellbroadcast-legacy

ใช้ APK CellBroadcastContentProvider ที่ OEM กำหนด

เมื่อกำหนด APK CellBroadcastContentProvider APK ต้องเป็นไปตามข้อกำหนดต่อไปนี้

  • APK เป็น APK แบบไม่มีส่วนหัวที่แสดงเฉพาะเนื้อหาของฐานข้อมูล และ SharedPreferences ผ่าน ContentProvider วัตถุที่มีหน่วยงาน cellbroadcast-legacy และไม่สามารถเข้าถึงได้ ไปยังแอปของบุคคลที่สามได้

  • APK ได้รับการพัฒนาและเป็นของ OEM โดยที่ 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 คอลัมน์การค้นหา แสดงรายการพร็อพเพอร์ตี้ข้อความที่รองรับสำหรับโมดูล CellBroadcast รับข้อมูล (จากฐานข้อมูลของคุณ) สำหรับเมธอด ContentProvider.query

สำหรับการติดตั้งใช้งานข้อมูลอ้างอิงสำหรับ CellBroadcastContentProvider, โปรดอ้างอิง LegacyCellBroadcastContentProvider

การทดสอบ

ชุดทดสอบความเข้ากันได้ของ Android (CTS) จะตรวจสอบฟังก์ชันการทำงานของ API ระบบที่ขึ้นอยู่กับแอป คุณยังเรียกใช้โมดูล CellBroadcast ได้ด้วย unit tests/testappsp

หาก OEM เปิดใช้รหัสลับ CMAS สำหรับอุปกรณ์ อุปกรณ์สามารถรองรับโหมดแก้ไขข้อบกพร่องด้วยฟีเจอร์ต่อไปนี้

  • การแจ้งเตือนการทดสอบจะจัดกลุ่มอยู่ในส่วนการแจ้งเตือนอื่นๆ โดยมีการสลับเปิด/ปิด

  • ประวัติจะรวมข้อความทั้งหมดที่ได้รับแต่ไม่ได้แสดง เช่น ข้อความซ้ำหรือข้อความที่เป็นภาษาอื่น

  • ข้อความแสดงพารามิเตอร์ที่ใช้ได้ทั้งหมด รวมถึงหมายเลขซีเรียล ข้อความ รหัส และวันที่หมดอายุ

หากต้องการเปิดใช้โหมดแก้ไขข้อบกพร่อง ให้กด *#*#CMAS#*#* ในแป้นโทรศัพท์

รายชื่อติดต่อ

สำหรับรายละเอียดเพิ่มเติมหรือข้อสงสัยเกี่ยวกับโมดูล CellBroadcast โปรดติดต่อ กลุ่มการสนับสนุนของ CellBroadcast