Phát sóng di động

Mô-đun CellBroadcast làm giảm các nỗ lực lặp đi lặp lại của OEM (từ đó giảm sự phân mảnh trên hệ sinh thái Android và cung cấp hành vi nhất quán cho người dùng cuối) và giúp hợp lý hóa việc kiểm tra và chứng nhận của nhà cung cấp dịch vụ cho các yêu cầu liên quan đến CellBroadcast (vì OEM không thể sửa đổi mã ). Mô-đun này có thể cập nhật, nghĩa là nó có thể nhận các bản cập nhật cho chức năng ngoài chu kỳ phát hành Android thông thường.

Định dạng gói

Mô-đun CellBroadcast bao gồm dịch vụ và ứng dụng sau.

  • Dịch vụ CellBroadcastService hỗ trợ giải mã CellBroadcast SMS, định vị địa lý cho cảnh báo khẩn cấp không dây (WEA) 3.0, kiểm tra trùng lặp tin nhắn và truyền phát tin nhắn tới các ứng dụng. Đó là dịch vụ nhắn tin được nhắm mục tiêu theo địa lý và có rào chắn địa lý một-nhiều được thiết kế để gửi tin nhắn đến nhiều người dùng điện thoại di động, trong một khu vực xác định, cùng một lúc. Dịch vụ này được xác định bởi ủy ban ETSI GSM, 3GPP và là một phần của tiêu chuẩn viễn thông.

  • Ứng dụng CellBroadcastReceiver là một ứng dụng hệ thống mặc định xử lý các cảnh báo khẩn cấp và không khẩn cấp (chẳng hạn như cảnh báo hổ phách và cảnh báo tổng thống), đồng thời trình bày thông tin cho người dùng cuối dựa trên các quy định của nhà cung cấp dịch vụ và khu vực.

Luồng tin nhắn CellBroadcast

Hình dưới đây cho thấy luồng tin nhắn CellBroadcast.

Luồng tin nhắn CellBroadcastReceiver

Hình 1. Luồng tin nhắn CellBroadcastReceiver

  1. Lớp giao diện vô tuyến (RIL) thông báo cho InBoundSMSHandler về SMS CellBroadcast CDMA/GSM.

  2. Khung chuyển tiếp SMS CellBroadcast tới mô-đun CBS để phân tích và xử lý tin nhắn đến.

  3. Sau khi tin nhắn được xử lý, CellBroadcastService sẽ chuyển tiếp ý định tới ứng dụng CellBroadcastReceiver mặc định của hệ thống.

  4. Ứng dụng CellBroadcastReceiver hiển thị thông báo cho người dùng.

Định dạng mô-đun

Ứng dụng CellBroadcastService và CellBroadcastReceiver được bao gồm trong một tệp APEX duy nhất ( com.android.cellbroadcast ), tệp này có sẵn cho các thiết bị chạy Android 11 trở lên. Mô-đun này bao gồm mã trong package/app/CellBroadcastReceiver và di chuyển các lớp khung hiện có sang packages/modules/CellBroadcastService .

Phần phụ thuộc của mô-đun

Mô-đun CellBroadcast tương tác với khung chỉ sử dụng @SystemApi ổn định (không có API @hide ) và phụ thuộc vào các thư viện tĩnh sau.

  • Androidx.legacy_legacy-support-v13
  • Androidx.recyclerview_recyclerview
  • Androidx.preference_preference
  • androidx.legacy_legacy-preference-v14
  • androidx.appcompat_appcompat

Bạn có thể tùy chỉnh cấu hình bằng cách sử dụng lớp phủ tài nguyên thời gian chạy (RRO) .

Cấu hình quyền

Mô-đun CellBroadcast được ký bằng chữ ký Google thay vì chữ ký nền tảng, có nghĩa là mô-đun này sẽ mất quyền truy cập vào các quyền về chữ ký. Thay vào đó, Android 11 xác định quyền chữ ký mới com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY bên trong mô-đun CellBroadcast; chỉ các gói trong mô-đun mới có thể nhận được quyền khi chúng được ký bằng cùng một khóa. Quyền này cho phép ứng dụng CellBroadcastReceiver có toàn quyền truy cập vào cơ sở dữ liệu bên trong CellBroadcastService.

Nền tảng này cấp quyền thời gian chạy android.permission.READ_CELL_BROADCASTS cho ứng dụng SMS hệ thống mặc định để truy cập lịch sử cảnh báo khẩn cấp.

Tích hợp module CellBroadcast

Phần này mô tả cách tích hợp mô-đun CellBroadcast.

Tích hợp với Cài đặt

Bạn có thể quyết định nơi tích hợp cài đặt CellBroadcast trong ứng dụng Cài đặt (người dùng cuối truy cập trang cài đặt CellBroadcast từ Cài đặt > Ứng dụng & Thông báo > Nâng cao > Cảnh báo khẩn cấp ). Để khởi chạy ứng dụng CellBroadcastReceiver từ ứng dụng Cài đặt, hãy thay đổi cấu hình cài đặt sau bằng tên gói com.android.cellbroadcastreceiver .

<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>

Tích hợp với ứng dụng nhắn tin

Bạn có thể tích hợp liên kết ứng dụng vào ứng dụng nhắn tin để mở lịch sử tin nhắn CellBroadcast. Trong ứng dụng Nhắn tin Android, tính năng này đã được tích hợp vào Cài đặt > Nâng cao > Cảnh báo khẩn cấp . Để tích hợp một liên kết trong ứng dụng nhắn tin của riêng bạn, hãy xác định đường dẫn trong ứng dụng nhắn tin và đặt cấu hình tên thành phần cho mô-đun CellBroadcast là com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity .

Tích hợp với hộp thư đến SMS

Bạn có thể bật hiển thị tin nhắn CellBroadcast trong ứng dụng nhắn tin mặc định bằng cách ghi đè cấu hình sau bằng lớp phủ tài nguyên thời gian chạy.

<item type="bool" name="enable_write_alerts_to_sms_inbox" />

Vì việc cấp quyền nằm ngoài phạm vi của mô-đun CellBroadcast nên bạn phải cấp quyền AppOpsManager.OP_WRITE_SMS cho mô-đun CellBroadcast để cung cấp hỗ trợ từ đầu đến cuối. Để triển khai tham chiếu AOSP, hãy tham khảo bản vá SmsApplication.java này .

Khởi chạy ứng dụng CellBroadcastReceiver

Ứng dụng CellBroadcastReceiver có các điểm khởi chạy sau.

  • Menu ứng dụng Cài đặt.

  • Một ứng dụng (bao gồm cả ứng dụng của bên thứ ba), chẳng hạn như ứng dụng tin nhắn liên kết với lịch sử tin nhắn CellBroadcast.

  • (Tùy chọn) Biểu tượng khởi chạy từ màn hình chính của Android do OEM thêm vào. Để biết chi tiết, hãy xem Thêm biểu tượng khởi chạy .

Cài đặt ứng dụng CellBroadcastReceiver

Các ảnh chụp màn hình sau đây hiển thị menu cài đặt ứng dụng CellBroadcastReceiver.

Menu cài đặt ứng dụng CellBroadcastReceiver

Hình 2. Menu cài đặt ứng dụng CellBroadcastReceiver

Lịch sử cảnh báo khẩn cấp

Hình 3. Màn hình lịch sử cảnh báo khẩn cấp

Thêm biểu tượng khởi chạy

Bạn có thể bật truy cập lịch sử tin nhắn CellBroadcast từ trình khởi chạy ứng dụng và thông qua các biểu tượng khởi chạy của riêng bạn.

  • Để cho phép truy cập lịch sử tin nhắn từ trình khởi chạy ứng dụng, hãy ghi đè cấu hình sau bằng RRO.

    <item type="bool" name="show_message_history_in_launcher" />
    
  • Để ghi đè biểu tượng mặc định AOSP, hãy ghi đè cấu hình sau bằng RRO.

    <!-- Customize launcher icon for cellbroadcast history -->
    <item type="mipmap" name="ic_launcher_cell_broadcast" />
    

Kích hoạt mã bí mật CMAS

Để bật mã bí mật CMAS, *#*#CMAS#*#* ( *#*#2627#*#* trên bàn phím quay số), ứng dụng quay số phải nghe mã quay số đặc biệt ở dạng *#*# code #*#* và xử lý mã bằng phương thức công khai sendDialerSpecialCode .

Yêu cầu thông tin khu vực: Kênh 50

Kênh 50 là kênh đặc biệt dành cho các nhà mạng phát sóng các thông tin liên quan đến khu vực (trừ MTN ở Nam Phi). Đối với kênh này, tin nhắn quảng bá không dẫn đến hộp thoại bật lên hoặc thông báo. Thay vào đó, tin nhắn quảng bá sẽ xuất hiện trong trạng thái SIM của menu Cài đặt hoặc trên thanh trạng thái (ví dụ: hiển thị mã ZIP).

Việc triển khai Android CellBroadcastService cung cấp hỗ trợ cho các API sau trong dịch vụ truyền phát trên di động cho các ứng dụng Cài đặt và SysUI để nhận thông tin Kênh 50 được phát sóng. Để thực hiện điều này, hãy làm như sau:

  • Đăng ký phát sóng android.telephony.action.AREA_INFO_UPDATED và ghi đè tên gói người nhận config_area_info_receiver_packages thông qua RRO.

  • Liên kết với CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE .

Vì ứng dụng Cài đặt và SysUI nằm ngoài phạm vi của mô-đun CellBroadcast nên bạn phải triển khai các thay đổi của mình trong ứng dụng SystemUI hoặc Cài đặt để cung cấp hỗ trợ toàn diện. Để biết cách triển khai tham khảo, hãy tham khảo ứng dụng Cài đặt CellBroadcastService .

Tùy chỉnh

Bạn không thể sửa đổi trực tiếp mã nguồn của mô-đun CellBroadcast nhưng bạn có thể sử dụng lớp phủ tài nguyên thời gian chạy (RRO) để bật (hoặc tắt) tham số (ví dụ: bạn có thể tùy chỉnh màu của thông báo và kích thước trên hộp thoại). Để ghi đè giá trị mặc định của các tham số được sử dụng trong mô-đun CellBroadcast, hãy thay đổi tên gói mục tiêu thành com.android.cellbroadcastreceiver . Ngoài ra:

  • Để biết danh sách các cấu hình có thể xếp chồng, hãy tham khảo overlayable.xml .

  • Để biết cách triển khai ví dụ, hãy tham khảo RROSampleTestApp trong AOSP.

Nếu quá trình triển khai thiếu tài nguyên dịch chuỗi giao diện người dùng hoặc nếu bản dịch không đáp ứng mong đợi của bạn, bạn có thể ghi đè tài nguyên dịch bằng RRO hoặc làm việc với nhóm dịch thuật của Google để ngược dòng bản dịch chuỗi sang mô-đun CellBroadcast. Nếu bạn ghi đè tài nguyên dịch, Google phải hiển thị các chuỗi đó trong tệp overlayable.xml để cho phép ghi đè. Nếu bạn cần thêm cấu hình để tùy chỉnh giao diện người dùng, hãy liên hệ với nhóm hỗ trợ CellBroadcast .

Di chuyển dữ liệu

Android 11 bao gồm ứng dụng CellBroadcast cũ, đây là một cơ chế để lưu giữ và di chuyển dữ liệu ứng dụng (bao gồm cài đặt người dùng và lịch sử cảnh báo khẩn cấp) cho các thiết bị nâng cấp lên mô-đun CellBroadcast. Việc triển khai Android sử dụng mô-đun CellBroadcast phải bao gồm ứng dụng CellBroadcast cũ trong bản dựng để di chuyển dữ liệu. Nếu việc triển khai của bạn sử dụng giải pháp CellBroadcast tùy chỉnh thì bạn nên xác định APK CellBroadcastContentProvider để bảo toàn dữ liệu (bạn có thể xóa APK phát sóng di động cũ một cách an toàn trong bản phát hành tiếp theo).

Trên các thiết bị được nâng cấp để sử dụng mô-đun CellBroadcast, mô-đun này sẽ tìm nạp dữ liệu từ AOSP LegacyCellBroadcastApp hoặc APK CellBroadcastContentProvider do OEM xác định thông qua cơ quan quản cellbroadcast-legacy được xác định rõ.

Sử dụng APK CellBroadcastContentProvider do OEM xác định

Khi xác định APK CellBroadcastContentProvider, APK phải tuân theo các thông số kỹ thuật này.

  • APK là một APK không có đầu chỉ hiển thị nội dung của cơ sở dữ liệu và SharedPreferences thông qua đối tượng ContentProvider có quyền cellbroadcast-legacy và không thể truy cập được đối với các ứng dụng của bên thứ ba.

  • APK được phát triển và sở hữu bởi OEM, nơi OEM có thể tiếp tục lưu trữ lược đồ API ẩn của họ.

Để di chuyển SharedPreferences sang mô-đun CellBroadcast, APK CellBroadcastContentProvider phải hỗ trợ phương thức ContentProvider.call ) với các tham số sau:

  • Cơ quan có thẩm quyền: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • Phương thức: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • Đối số: @SystemAPI CellBroadcast.Preference

    Đây là danh sách các khóa tùy chọn chia sẻ được hỗ trợ cho mô-đun CellBroadcast. Dữ liệu đến từ SharedPreferences cho phương thức ContentProvider.call .

Để di chuyển lịch sử tin nhắn sang mô-đun CellBroadcast, APK CellBroadcastContentProvider phải hỗ trợ phương thức ContentProvider.query với các tham số sau:

  • Cơ quan có thẩm quyền: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI . Các cột truy vấn liệt kê các thuộc tính thông báo được hỗ trợ cho mô-đun CellBroadcast. Lấy dữ liệu (từ cơ sở dữ liệu của bạn) cho phương thức ContentProvider.query .

Để biết cách triển khai tham chiếu cho CellBroadcastContentProvider, hãy tham khảo LegacyCellBroadcastContentProvider .

Kiểm tra

Bộ kiểm tra khả năng tương thích Android (CTS) xác minh chức năng của các API hệ thống phụ thuộc vào ứng dụng. Bạn cũng có thể chạy unit tests/testappsp .

Nếu OEM đã kích hoạt mã bí mật CMAS cho một thiết bị thì thiết bị đó có thể hỗ trợ chế độ gỡ lỗi với các tính năng sau.

  • Cảnh báo kiểm tra được nhóm trong Cảnh báo khác bằng nút bật/tắt.

  • Lịch sử bao gồm tất cả các tin nhắn đã nhận được nhưng không được hiển thị, chẳng hạn như tin nhắn trùng lặp hoặc tin nhắn bằng ngôn ngữ khác.

  • Tin nhắn hiển thị tất cả các tham số có sẵn, bao gồm số sê-ri, ID tin nhắn và ngày hết hạn.

Để bật chế độ gỡ lỗi, hãy quay số *#*#CMAS#*#* trên trình quay số.

Liên hệ

Để biết thêm chi tiết hoặc có câu hỏi về mô-đun CellBroadcast, hãy liên hệ với nhóm hỗ trợ CellBroadcast .