Các thiết bị Android không có số dư dữ liệu cho phép lưu lượng truy cập mạng, yêu cầu các nhà mạng và nhà cung cấp dịch vụ viễn thông triển khai các giao thức giảm thiểu. Android triển khai một giải pháp chung cho phép các nhà mạng và nhà cung cấp dịch vụ viễn thông cho biết thời điểm một thiết bị hết số dư.
Nền tảng Android cung cấp một ứng dụng của nhà mạng mặc định có hành vi mặc định để giảm lưu lượng truy cập dựa trên tín hiệu phát hiện trang xác thực. API này cũng mang đến cho các nhà mạng và nhà sản xuất thiết bị gốc (OEM) cơ hội tuỳ chỉnh hành vi với chi phí thấp và tính linh hoạt cao.
Ví dụ và nguồn
Ứng dụng của nhà mạng mặc định nằm ởplatform/frameworks/base/packages/CarrierDefaultApp/.
Triển khai
Ứng dụng nhà mạng mặc định được định cấu hình để mang lại trải nghiệm tốt hơn cho các nhà mạng chưa được định cấu hình ngay từ đầu. Nhà mạng có thể sử dụng hành vi mặc định này. Các ứng dụng này cũng có thể ghi đè hành vi mặc định bằng cách thêm các ánh xạ tín hiệu-hành động vào tệp XML cấu hình của nhà mạng. Người dùng có thể quyết định không sử dụng ứng dụng mặc định mà thay vào đó sử dụng các đặc quyền của UICC bằng ứng dụng của nhà mạng độc lập.
Giới thiệu về cách triển khai
Tín hiệu
Khung Android hỗ trợ việc định cấu hình các hành động cho các tín hiệu có tham số sau:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
Các tín hiệu này nằm trong frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java
.
Thao tác được hỗ trợ
Ứng dụng của nhà mạng mặc định xác định một tập hợp các thao tác được hỗ trợ có thể được liên kết với các tín hiệu được hỗ trợ. Các giá trị này được xác định trong CarrierActionUtils.java
:
public static final int CARRIER_ACTION_ENABLE_METERED_APNS = 0; public static final int CARRIER_ACTION_DISABLE_METERED_APNS = 1; public static final int CARRIER_ACTION_DISABLE_RADIO = 2; public static final int CARRIER_ACTION_ENABLE_RADIO = 3; public static final int CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION = 4; public static final int CARRIER_ACTION_SHOW_NO_DATA_SERVICE_NOTIFICATION = 5; public static final int CARRIER_ACTION_CANCEL_ALL_NOTIFICATIONS = 6;
Lưu ý: Nếu triển khai ứng dụng độc lập của riêng mình, thì nhà mạng có thể triển khai tính năng hỗ trợ cho các tín hiệu khác ngoài những tín hiệu được đề cập trong phần này. Các thành phần này cũng có thể xác định và định cấu hình các hành động của riêng mình.
Các ánh xạ tín hiệu-hành động mặc định
Định cấu hình các thao tác mặc định bằng cách làm theo quy trình sau:
- Xác định khoá cho các tín hiệu được hỗ trợ.
Các ánh xạ tín hiệu mặc định đến hành động được xác định trong
CarrierConfigManager.java
. Mỗi tín hiệu được hỗ trợ đều có một khoá:public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array"; public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY = "carrier_default_actions_on_dcfailure_string_array";
- Liên kết các thao tác mặc định với các phím tín hiệu.
Mã hành động mặc định được liên kết với các khoá tín hiệu:
sDefaults.putStringArray(KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY, new String[]{ "1, 4" //1: CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION // 4: CARRIER_ACTION_DISABLE_METERED_APNS });
Khung điện thoại liên kết các hành động này với các tín hiệu tương ứng.
Ghi đè hành động mặc định
Bạn có thể xác định các thao tác tuỳ chỉnh cho các tín hiệu được hỗ trợ trong tệp XML cấu hình của nhà mạng bằng cách liên kết mã nhận dạng thao tác với khoá tín hiệu (được xác định trong CarrierConfigManager.java
). Ví dụ: mối liên kết sau đây sẽ tắt các APN có đo lượng dữ liệu và hiển thị thông báo cổng thông tin về việc chuyển hướng:
<string-array name="carrier_default_actions_on_redirection_string_array" num="2"> <item value="1" /> <item value="4" /> </string-array>
Khung điện thoại sẽ tải các cấu hình này và ghi đè các thao tác mặc định.
Xác nhận kết quả
Không có quy trình kiểm thử CTS, CTS Verifier hoặc GTS nào cho tính năng này.
Sử dụng các bài kiểm thử xác thực thủ công sau để xác thực tính năng:
- Xác thực thông báo tín hiệu hết tiền của nhà mạng viễn thông trên thiết bị.
- Xác minh tính năng điều tiết việc chuyển hướng lưu lượng truy cập trong trạng thái mất cân bằng và Wi-Fi tắt.
- Xác minh lưu lượng truy cập mạng bị giảm và giao diện người dùng thông báo xuất hiện trong trạng thái hết tiền.
- Xác thực chức năng cuộc gọi thoại/VoLTE trong trạng thái hết tiền.
- Xác minh rằng tính năng gọi video bị chặn khi tài khoản hết tiền.
- Khi bật Wi-Fi, hãy xác minh người dùng có thể tiếp tục duyệt web và lưu lượng truy cập duyệt web không bật lưu lượng truy cập mạng khi ở trạng thái mất cân bằng.
- Xác thực các chức năng Wi-Fi, WFC và Bluetooth trong trạng thái mất cân bằng.
- Tắt Wi-Fi. Xác minh giao diện người dùng thông báo hết tiền và lưu lượng truy cập duyệt web thông thường không được chuyển hướng đến trang web đăng ký dịch vụ viễn thông. Xác minh rằng khi nhấp vào đường liên kết trong giao diện người dùng thông báo, trình duyệt sẽ chuyển đến trang web đăng ký của nhà mạng.
- Xác minh rằng việc bật/tắt chế độ trên máy bay không đặt lại trạng thái điều tiết lưu lượng truy cập.
- Xác minh rằng việc hoán đổi thẻ SIM đang hoạt động sẽ đặt lại trạng thái lưu lượng truy cập mạng.
- Xác minh rằng việc lắp lại thẻ SIM hết tiền sẽ khởi động lại quá trình chuyển hướng lưu lượng truy cập và lấy lại tính năng điều tiết lưu lượng truy cập mạng.
- Xác minh rằng việc khởi động lại điện thoại sẽ kích hoạt lại tính năng chuyển hướng và khôi phục giao diện người dùng thông báo và điều tiết lưu lượng truy cập.
- Nhấn vào thông báo "captiveportal". Xác minh rằng kết nối mạng bị hạn chế đã được thiết lập để cho phép người dùng thêm tín dụng.
- Xác minh rằng việc nạp tiền hoặc kích hoạt lại số dư SIM sẽ giúp lưu lượng truy cập mạng di động phục hồi, đồng thời liên kết với nhà mạng và thông báo không có số dư sẽ biến mất.
- Kiểm thử tính hợp lệ sau khi khôi phục dịch vụ dữ liệu.
Ứng dụng mặc định cung cấp một số ví dụ về kiểm thử đơn vị và tập lệnh để chạy các kiểm thử đó (xem tests/runtest.sh
). Khi triển khai một phiên bản hoặc hành vi tuỳ chỉnh, bạn nên phản ánh các tuỳ chỉnh đó vào các kiểm thử đơn vị chuyên dụng.