Android 9 cho phép nhà mạng trực tiếp cung cấp thông tin chi tiết chính xác về gói cho người dùng trong ứng dụng Cài đặt để giảm sự nhầm lẫn của người dùng và các cuộc gọi hỗ trợ. Trên các thiết bị chạy Android 4.0 trở lên, người dùng có thể tự định cấu hình chi tiết gói dữ liệu theo nhà mạng trong ứng dụng Cài đặt, chẳng hạn như đặt cảnh báo và giới hạn để quản lý mức sử dụng dữ liệu.
Cấu hình theo nhà mạng
Để định cấu hình gói dữ liệu, nhà mạng có thể thêm chức năng vào các ứng dụng Android hiện có bằng cách sử dụng SubscriptionPlan
API.
Các API này được thiết kế để hỗ trợ nhiều loại gói dữ liệu, bao gồm cả gói định kỳ và không định kỳ, cũng như các gói thay đổi theo thời gian.
Dưới đây là ví dụ về cách định cấu hình một loại gói dữ liệu phổ biến, lặp lại hằng tháng:
SubscriptionManager sm =
context.getSystemService(SubscriptionManager.class);
sm.setSubscriptionPlans(subId, Lists.newArrayList(
SubscriptionPlan.Builder.createRecurringMonthly(
ZonedDateTime.parse("2016-12-03T10:00:00Z"))
.setTitle("G-Mobile")
.setDataLimit(4_000_000_000L,
SubscriptionPlan.LIMIT_BEHAVIOR_BILLED)
.setDataUsage(200_493_293L, dataUsageTimestamp)
.build()));
Thiết bị chỉ cho phép ứng dụng định cấu hình gói dữ liệu trong một trong các điều kiện sau:
- Thẻ SIM đã xác định rõ một ứng dụng có thể quản lý thẻ SIM, như được xác định bởi
SubscriptionManager.canManageSubscription()
. - Nhà mạng đã đẩy giá trị
KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING
thông quaCarrierConfigManager
để cho biết ứng dụng nào có thể quản lý gói dữ liệu của nhà mạng. - Thiết bị có một ứng dụng được tích hợp vào ảnh hệ thống có quyền
MANAGE_SUBSCRIPTION_PLANS
.
Hai điều kiện đầu tiên cho phép người dùng cài đặt ứng dụng của nhà mạng mà không yêu cầu cài đặt sẵn ứng dụng đó vào hình ảnh hệ thống tại nhà máy. Hệ điều hành thực thi (và CDD yêu cầu) rằng tất cả thông tin chi tiết về gói dữ liệu đã định cấu hình đều phải được bảo vệ và chỉ được cung cấp cho ứng dụng của nhà mạng đã cung cấp thông tin chi tiết ban đầu cho hệ điều hành.
Một thiết kế được đề xuất là ứng dụng của nhà mạng sử dụng dịch vụ bảo trì khi rảnh để cập nhật thông tin chi tiết về gói dữ liệu hằng ngày, nhưng nhà mạng có thể tự do sử dụng nhiều cơ chế, chẳng hạn như nhận thông tin chi tiết về gói dữ liệu thông qua tin nhắn SMS nội bộ của nhà mạng. Tốt nhất là bạn nên triển khai các dịch vụ bảo trì khi rảnh bằng một công việc JobScheduler
sử dụng setRequiresDeviceIdle()
và setRequiresCharging()
.
Mức sử dụng theo hệ điều hành
Hệ điều hành sử dụng thông tin chi tiết về gói dữ liệu do các API SubscriptionPlan cung cấp theo các cách sau:
- Thông tin chi tiết về gói sẽ xuất hiện thông qua ứng dụng Cài đặt để hiển thị mức sử dụng dữ liệu chính xác cho người dùng và cung cấp đường liên kết sâu trực tiếp đến ứng dụng của nhà mạng để có cơ hội nâng cấp/bán thêm.
- Cảnh báo về mức sử dụng dữ liệu và ngưỡng thông báo giới hạn được tự động định cấu hình dựa trên thông tin chi tiết về gói; cảnh báo được đặt thành 90% giới hạn.
- Nếu nhà mạng tạm thời cho biết mạng đang "quá tải", thì hệ điều hành sẽ trì hoãn các công việc JobScheduler có thể được chuyển đổi thời gian, giảm tải trên mạng của nhà mạng.
- Nếu nhà mạng tạm thời cho biết mạng đang ở trạng thái "không tính cước", thì hệ điều hành có thể báo cáo kết nối di động là "không tính cước" cho đến khi nhà mạng xoá chế độ ghi đè hoặc cho đến khi đạt đến giá trị thời gian chờ (nếu có).
- Bằng cách so sánh mức sử dụng dữ liệu hiện tại của người dùng với hạn mức dữ liệu tổng thể, hệ điều hành sẽ ước tính mức sử dụng dữ liệu thông thường của người dùng vào cuối chu kỳ thanh toán và phân bổ một cách thận trọng 10% dữ liệu dư thừa để cải thiện trải nghiệm người dùng, chẳng hạn như bằng cách cho phép ứng dụng sử dụng dữ liệu nhiều đường dẫn.
Tuỳ chỉnh và xác thực
Ứng dụng Cài đặt Android hiển thị tất cả thông tin chi tiết về gói dữ liệu do nhà mạng thiết lập, đảm bảo rằng người dùng thấy trạng thái chính xác nhất về mối quan hệ với nhà mạng và cung cấp cho người dùng đường dẫn đến ứng dụng của nhà mạng để nâng cấp gói. Các nhà sản xuất thiết bị chọn tuỳ chỉnh ứng dụng Cài đặt nên tiếp tục hiển thị những thông tin chi tiết này.
Các API SubscriptionManager
được mô tả trên trang này được kiểm thử bằng android.telephony.cts.SubscriptionManagerTest
, đảm bảo rằng ứng dụng của nhà mạng có thể định cấu hình thông tin chi tiết về gói dữ liệu và các thay đổi được truyền trong hệ điều hành.