CellBroadcast

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

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

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

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

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

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

รูปที่ 1 แสดงโฟลว์ของข้อความ CellBroadcast

ขั้นตอนการทำงานของข้อความ CellBroadcastReceiver

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

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

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

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

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

เมนูการตั้งค่าแอป 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