Android 11 bổ sung chức năng hỗ trợ 5G trong ứng dụng. 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 5G
Khi quyết định cách tương tác với 5G, hãy nghĩ đến 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ể cải thiện ứng dụng của bạn:
- Tự động giúp 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 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 nguyê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 khiến người dùng mất phí, hãy cung cấp 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 xuống.
- Cung cấp trải nghiệm độc đáo cho 5G, chỉ hoạt động với tốc độ cao và độ trễ thấp.
Chức năng 5G
Android 11 ra mắt các thay đổi và 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 bạn biết liệu mạng bạn đang sử dụng có bị đo lượng dữ liệu 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ạ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 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ể hoạt động, 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 tạm thời hoặc vĩnh viễn không đo lượng dữ liệu, 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 dữ liệu 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 cách sử dụng ConnectivityManager.registerDefaultNetworkCallback() để nghe khi 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 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 sang có đo lượng dữ liệu hoặc ngược lại.
Kiểm tra xem có phải là kết nối có đo lượng dữ liệu hay không
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 trên SDK Android 11.Tính năng
NET_CAPABILITY_NOT_METEREDlà vĩnh viễn trên mạng. Mạng có chức năng này sẽ tự động ngắt kết nối nếu mất chức năng này (trở thành mạng có đo lượng dữ liệu).Ngược lại,
NET_CAPABILITY_TEMPORARILY_NOT_METEREDcó thể thay đổi trên mạng mà không cần ngắt kết nối. Do đó, ứ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 có đo lượng dữ liệu (mất chức 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 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 là mạng 5G NR (độc lập) hay NSA (không độc lập).
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.
Kích hoạt trải nghiệm 5G độc đáo trong ứng dụng chỉ khi dùng mạng 5G. Bạn nên kết hợp việc kiểm tra trạng thái này với kiểm tra xem có tính phí theo lưu lượng hay không.
Theo dõi kết nối 5G để phục vụ mục đích phân tích.
Để kiểm tra khả 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 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 dùng cho mục đích hiển thị. Một ngoại lệ là nếu nhà mạng chọn hiển thị 5G làm RAT cho mạng mmWave, 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ị:
| Kiểu dữ liệu trả về | Mạng |
|---|---|
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO |
Advanced pro LTE (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 cùng khi xác định mức đo lượng dữ liệu. Bạn có thể nhận thông tin ước tính về 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 nhờ các bản nâng cấp hỗ trợ khung và
bản sửa lỗi nền tảng/modem để phù hợp với 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 rảnh". Ứng dụng của bạn nên đ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 truyền trực tuyến một cách linh động. Ví dụ: bạn có thể chọn độ phân giải của video để cung cấp dựa trên thông tin ước tính về băng thông khi khởi động. Tiếp tục kiểm tra 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.