Android 11 bổ sung chức năng hỗ trợ 5G trong các ứng dụng của bạn. Chủ đề này đề cập đến chức năng và cung cấp cho bạn thông tin tổng quan về cách thêm chức năng dành riêng cho 5G vào ứng dụng để cải thiện trải nghiệm người dùng.
Xây dựng cho mạng 5G
Khi quyết định cách tương tác với 5G, hãy nghĩ về những loại trải nghiệm mà bạn đang cố gắng xây dựng. Sau đây là một số cách mà 5G có thể nâng cao ứng dụng của bạn:
- Tự động cải thiện tốc độ và độ trễ của các trải nghiệm hiện tại nhờ những cải tiến về tốc độ và độ trễ của 5G.
- Nâng cao trải nghiệm người dùng, chẳng hạn như bằng cách hiển thị video 4K hoặc tải nội dung trò chơi có độ phân giải cao hơn xuống.
- Sau khi xác nhận rằng mức sử dụng dữ liệu tăng lên sẽ không tốn phí của người dùng, hãy thêm những trải nghiệm thường chỉ được cung cấp qua Wi-Fi, chẳng hạn như chủ động tải nội dung xuống (thường dành riêng cho Wi-Fi không giới hạn dữ liệu).
- Cung cấp những trải nghiệm chỉ có trên mạng 5G, chỉ hoạt động với tốc độ cao và độ trễ thấp.
Chức năng 5G
Android 11 có những thay đổi và điểm cải tiến sau đây về chức năng:
Kiểm tra trạng thái đo lường
NET_CAPABILITY_TEMPORARILY_NOT_METERED
là một chức năng được thêm vào Android 11, cho biết liệu mạng bạn đang sử dụng có phải là mạng không giới hạn hay không dựa trên thông tin do nhà mạng di động cung cấp.
Cờ mới được dùng cùng với NET_CAPABILITY_NOT_METERED
.
Cờ hiện có cho biết liệu một mạng có luôn không đo lượng dữ liệu hay không và áp dụng cho cả kết nối Wi-Fi và di động.
Sự khác biệt giữa hai cờ này là NET_CAPABILITY_TEMPORARILY_NOT_METERED
có thể thay đổi mà không cần thay đổi loại mạng. Các ứng dụng nhắm đến Android 11 có thể sử dụng cờ NET_CAPABILITY_TEMPORARILY_NOT_METERED
. Trên các thiết bị chạy Android 9 trở xuống, hệ điều hành sẽ không báo cáo về cờ này. Đối với các ứng dụng chạy trên Android 10, cờ này có thể dùng được, tuỳ thuộc vào thiết bị mà ứng dụng đang chạy.
Sau khi xác định rằng mạng hiện tại là mạng không giới hạn dữ liệu tạm thời hoặc vĩnh viễn, bạn có thể hiển thị nội dung có độ phân giải cao hơn (chẳng hạn như video 4K), tải nhật ký lên, sao lưu tệp và chủ động tải nội dung xuống.
Các phần sau đây trình bày các bước để thêm tính năng kiểm tra mức sử dụng theo hạn mức vào ứng dụng của bạn.
Đăng ký lệnh gọi lại mạng
Đăng ký lệnh gọi lại mạng bằng ConnectivityManager.registerDefaultNetworkCallback()
để biết thời điểm NetworkCapabilities
thay đổi. Bạn có thể phát hiện các thay đổi đối với NetworkCapabilities
bằng cách ghi đè phương thức onCapabilitiesChanged()
trong NetworkCallback
.
registerDefaultNetworkCallback()
khiến lệnh gọi lại đã đăng ký kích hoạt ngay khi đăng ký, cung cấp cho ứng dụng thông tin về trạng thái hiện tại. Các lệnh gọi lại trong tương lai đóng vai trò quan trọng để ứng dụng thực hiện hành động thích hợp khi trạng thái thay đổi từ không giới hạn sang có giới hạn hoặc ngược lại.
Kiểm tra trạng thái đo lường
Sử dụng đối tượng NetworkCapabilites
mà bạn nhận được trong một lệnh gọi lại mạng để kiểm tra đầu ra của mã sau:
Kotlin
NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) || NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)
Java
NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) || NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)
Nếu giá trị là true, thì bạn có thể coi mạng là không đo lường.
Các yếu tố cần cân nhắc khác
Khi sử dụng chức năng này, hãy lưu ý những điều sau:
Để sử dụng cờ
NET_CAPABILITY_TEMPORARILY_NOT_METERED
, bạn phải biên dịch ứng dụng trên SDK Android 11.Tính năng
NET_CAPABILITY_NOT_METERED
là tính năng cố định trên mạng. Mạng có khả năng này sẽ tự động ngắt kết nối nếu mất khả năng (trở thành mạng đo lượng).Ngược lại,
NET_CAPABILITY_TEMPORARILY_NOT_METERED
có thể thay đổi trên một mạng mà không bị ngắt kết nối. Do đó, các ứng dụng phải theo dõi lệnh gọi lạionCapabilitiesChanged()
để xử lý khi mạng trở về trạng thái đo lượng dữ liệu (mất khả năngNET_CAPABILITY_TEMPORARILY_NOT_METERED
).Một mạng không thể có cả
NET_CAPABILITY_NOT_METERED
vàNET_CAPABILITY_TEMPORARILY_NOT_METERED
cùng một lúc.
Phát hiện mạng 5G
Kể từ Android 11, bạn có thể phát hiện xem thiết bị có kết nối với mạng 5G hay không bằng cách dùng một lệnh gọi API dựa trên lệnh gọi lại. Bạn có thể kiểm tra xem kết nối có phải là mạng 5G NR (độc lập) hay NSA (không độc lập) hay không.
Một số trường hợp sử dụng lệnh gọi API này có thể bao gồm:
Hiển thị thương hiệu 5G trong ứng dụng để làm nổi bật rằng bạn đang cung cấp trải nghiệm 5G độc đáo.
Chỉ kích hoạt trải nghiệm 5G độc đáo trong ứng dụng khi đang dùng mạng 5G. Bạn nên kết hợp bước kiểm tra trạng thái này với kiểm tra mức sử dụng dữ liệu có tính phí.
Theo dõi các kết nối 5G cho mục đích phân tích.
Để kiểm thử tính năng phát hiện 5G mà không cần thiết bị 5G, bạn có thể sử dụng các tính năng được thêm vào trình mô phỏng SDK Android.
Phát hiện mạng 5G
Gọi TelephonyManager.listen()
, truyền vào LISTEN_DISPLAY_INFO_CHANGED
, để xác định xem người dùng có kết nối mạng 5G hay không. Ghi đè phương thức onDisplayInfoChanged()
để xác định loại mạng được dùng cho mục đích hiển thị. Một trường hợp ngoại lệ là nếu nhà mạng chọn hiển thị 5G làm RAT cho mạng mmWave của họ, thì OVERRIDE_NETWORK_TYPE_NR_NSA
sẽ được trả về.
Bảng sau đây cho biết các mạng tương ứng với các giá trị:
Loại giá trị trả về | Mạng |
---|---|
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO |
LTE nâng cao (5Ge) |
OVERRIDE_NETWORK_TYPE_NR_NSA |
NR (5G) cho mạng 5G Sub-6 |
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE |
(5G+/5G UW) cho mạng 5G mmWave |
Ước tính băng thông
Tính năng ước tính băng thông sử dụng đối tượng NetworkCapabilities
mà bạn thao tác khi xác định mức đo lượng dữ liệu. Bạn có thể ước tính băng thông bằng đối tượng đó.
Độ tin cậy và độ chính xác của các phương thức ước tính băng thông getLinkDownstreamBandwidthKbps()
và getLinkUpstreamBandwidthKbps()
được cải thiện trong Android 11 do các bản nâng cấp cho hoạt động hỗ trợ khung và các bản sửa lỗi nền tảng/modem để đáp ứng mạng 5G.
Các giá trị mặc định về băng thông chỉ cung cấp hướng dẫn về việc khởi động ứng dụng. Điều này sẽ giúp bạn trong trường hợp "khởi động khi không hoạt động". Ứng dụng của bạn phải đo lường những gì ứng dụng thấy được sau khi người dùng bắt đầu tương tác với ứng dụng và điều chỉnh hành vi phát trực tuyến một cách linh hoạt. Ví dụ: bạn có thể chọn độ phân giải của video cần cung cấp dựa trên mức băng thông ước tính khi khởi động. Tiếp tục kiểm tra các thông tin ước tính khi người dùng sử dụng ứng dụng; khi loại và cường độ kết nối của họ thay đổi, hãy điều chỉnh hành vi của ứng dụng cho phù hợp.