CellBroadcast

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

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

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

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

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

การไหลของข้อความ CellBroadcast

รูปภาพต่อไปนี้แสดงโฟลว์ข้อความ CellBroadcast

การไหลของข้อความ CellBroadcastReceiver

รูปที่ 1 โฟลว์ข้อความ CellBroadcastReceiver

  1. Radio Interface Layer (RIL) แจ้ง InBoundSMSHandler เกี่ยวกับ CDMA/GSM CellBroadcast SMS

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

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

  4. แอป CellBroadcastReceiver จะแสดงข้อความถึงผู้ใช้

รูปแบบของโมดูล

แอป CellBroadcastService และ CellBroadcastReceiver รวมอยู่ในไฟล์ APEX ไฟล์เดียว ( com.android.cellbroadcast ) ซึ่งพร้อมใช้งานสำหรับอุปกรณ์ที่ใช้ Android 11 ขึ้นไป โมดูลประกอบด้วยโค้ดใน package/app/CellBroadcastReceiver และย้ายคลาสเฟรมเวิร์กที่มีอยู่ไปยัง packages/modules/CellBroadcastService

การพึ่งพาโมดูล

โมดูล 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>

บูรณาการกับแอพส่งข้อความ

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

การใช้งาน Android CellBroadcastService ให้การสนับสนุน API ต่อไปนี้ในบริการออกอากาศทางมือถือสำหรับการตั้งค่าและแอป SysUI เพื่อรับข้อมูลการออกอากาศช่อง 50 หากต้องการใช้สิ่งนี้ ให้ทำดังต่อไปนี้:

  • ลงทะเบียนการออกอากาศ android.telephony.action.AREA_INFO_UPDATED และแทนที่ชื่อแพ็กเกจตัว config_area_info_receiver_packages ผ่าน RRO

  • เชื่อมโยงกับ CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE

เนื่องจากแอปการตั้งค่าและ SysUI อยู่นอกขอบเขตของโมดูล CellBroadcast คุณต้องใช้การเปลี่ยนแปลงของคุณใน SystemUI หรือแอปการตั้งค่าเพื่อให้การสนับสนุนแบบ end-to-end สำหรับการดำเนินการอ้างอิง โปรดดู แอปการตั้งค่า 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 ของการออกอากาศทางเซลล์แบบเดิมได้อย่างปลอดภัยในรุ่นต่อๆ ไป)

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

การใช้ CellBroadcastContentProvider APK ที่กำหนดโดย OEM

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

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

  • APK ได้รับการพัฒนาและเป็นเจ้าของโดย OEM โดยที่ OEM สามารถโฮสต์สคีมา API ที่ซ่อนอยู่ต่อไปได้

หากต้องการย้าย SharedPreferences ไปยังโมดูล CellBroadcast นั้น CellBroadcastContentProvider APK จะต้องรองรับเมธอด ContentProvider.call ) ด้วยพารามิเตอร์ต่อไปนี้:

  • ผู้มีอำนาจ: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • วิธีการ: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • หาเรื่อง: @SystemAPI CellBroadcast.Preference

    นี่คือรายการคีย์การตั้งค่าที่ใช้ร่วมกันที่รองรับสำหรับโมดูล CellBroadcast ข้อมูลมาจาก SharedPreferences สำหรับเมธอด ContentProvider.call

หากต้องการย้ายประวัติข้อความไปยังโมดูล CellBroadcast นั้น CellBroadcastContentProvider APK จะต้องรองรับเมธอด ContentProvider.query ด้วยพารามิเตอร์ต่อไปนี้:

  • ผู้มีอำนาจ: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI คอลัมน์แบบสอบถามแสดงรายการคุณสมบัติข้อความที่รองรับสำหรับโมดูล CellBroadcast รับข้อมูล (จากฐานข้อมูลของคุณ) สำหรับเมธอด ContentProvider.query

สำหรับการดำเนินการอ้างอิงสำหรับ CellBroadcastContentProvider, โปรดดูที่ LegacyCellBroadcastContentProvider

การทดสอบ

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

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

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

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

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

หากต้องการเปิดใช้งานโหมดแก้ไขข้อบกพร่อง ให้กด *#*#CMAS#*#* บนตัวเรียกเลขหมาย

ติดต่อ

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