Android 11 bổ sung chức năng hỗ trợ mạng 5G trong ứng dụng. Chủ đề này trình bày về 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 mạng 5G vào ứng dụng có thể 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 mạng 5G, hãy nghĩ về những loại trải nghiệm mà bạn đang cố gắng xây dựng. Một số cách mà mạng 5G có thể nâng cao ứng dụng của bạn bao gồm:
- Tự động làm cho trải nghiệm hiện tại nhanh hơn và tốt hơn nhờ tốc độ và độ trễ được cải thiện của mạng 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 xuống tài sản trò chơi có độ phân giải cao hơn.
- Sau khi xác nhận rằng việc tăng mức sử dụng dữ liệu sẽ không tính phí người dùng, hãy đưa vào 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 thường dành riêng cho Wi-Fi không đo lượng 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 giới thiệu những thay đổi và cải tiến về chức năng sau:
Kiểm tra mức đo lượng dữ liệu
The
NET_CAPABILITY_TEMPORARILY_NOT_METERED
là một tính năng được thêm vào Android 11, cho biết liệu
mạng bạn đang sử dụng có không đo lượng dữ liệu hay không dựa trên thông tin do các 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à kết nối di động.
Sự khác biệt giữa hai cờ là
NET_CAPABILITY_TEMPORARILY_NOT_METERED có thể thay đổi mà không thay đổi loại mạng
thay đổi. Các ứng dụng nhắm mục tiêu đế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ể có sẵn, 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 không đo lượng 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 đo lượng dữ liệu vào ứng dụng.
Đăng ký lệnh gọi lại mạng
Đăng ký lệnh gọi lại mạng bằng cách sử dụng
ConnectivityManager.registerDefaultNetworkCallback()
để biết khi nào NetworkCapabilities thay đổi. Bạn có thể phát hiện các thay đổi đối với
NetworkCapabilities bằng cách ghi đè
onCapabilitiesChanged()
phương thức trong NetworkCallback.
registerDefaultNetworkCallback() khiến lệnh gọi lại đã đăng ký kích hoạt
ngay lập tức khi được đă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 rất 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 đo lượng dữ liệu thành đo lượng dữ liệu hoặc ngược lại.
Kiểm tra mức đo lượng dữ liệu
Sử dụng đối tượng NetworkCapabilites mà bạn nhận được trong lệnh gọi lại mạng để
kiểm tra kết quả 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 dữ liệu.
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 của mình dựa trên SDK Android 11.Tính năng
NET_CAPABILITY_NOT_METEREDlà tính năng vĩnh viễn trên một mạng. Mạng có tính năng này sẽ tự động ngắt kết nối nếu mất tính năng (trở thành mạng đo lượng dữ liệu).Ngược lại,
NET_CAPABILITY_TEMPORARILY_NOT_METEREDcó thể thay đổi trên một mạng mà không 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 quay lại trạng thái đo lượng dữ liệu (mất tính năngNET_CAPABILITY_TEMPORARILY_NOT_METERED).Một mạng không thể có cả
NET_CAPABILITY_NOT_METEREDvàNET_CAPABILITY_TEMPORARILY_NOT_METEREDcù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 sử dụng 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 cho 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 ở trên mạng 5G. Bạn nên kết hợp việc kiểm tra trạng thái này với việc kiểm tra mức đo lượng dữ liệu.
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 mạng 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
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ọ,
OVERRIDE_NETWORK_TYPE_NR_NSA sẽ được trả về.
Bảng sau đây cho thấy 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 Advanced Pro (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 làm việc
khi xác định mức đo lượng dữ liệu. Bạn có thể nhận được ước tính băng thông bằng cách sử dụ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 tính năng hỗ trợ khung và
các bản sửa lỗi nền tảng/modem để phù hợp với mạng 5G.
Giá trị mặc định của 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 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 để cung cấp dựa trên ước tính băng thông khi khởi động. Tiếp tục kiểm tra các ước tính khi người dùng sử dụng ứng dụng; khi loại kết nối và cường độ kết nối thay đổi, hãy điều chỉnh hành vi của ứng dụng cho phù hợp.