Thêm chức năng 5G vào ứng dụng

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 việc thêm chức năng dành riêng cho 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 5G

Khi quyết định cách tương tác với 5G, hãy nghĩ đến 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ể giúp cải thiện ứng dụng của bạn:

  • Tự động cải thiện tốc độ và độ trễ của trải nghiệm hiện tại nhờ tốc độ và độ trễ được cải thiện của 5G.
  • Nâng cấp 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 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 làm người dùng mất phí, 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 trải nghiệm dành riêng 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 về chức năng sau:

Kiểm tra mức đo

NET_CAPABILITY_TEMPORARILY_NOT_METERED là một tính 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ó tính phí hay không dựa trên thông tin do nhà mạng di động cung cấp.

Cờ mới được sử 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ờ này là NET_CAPABILITY_TEMPORARILY_NOT_METERED có thể thay đổi mà không làm 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ể có sẵn, tuỳ thuộc vào thiết bị đang chạy ứng dụng đó.

Sau khi xác định rằng mạng hiện tại không tính 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 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() để 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 đượ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 có thể thực hiện hành động thích hợp khi trạng thái đang thay đổi từ không đo lượng dữ liệu sang đo lượng dữ liệu hoặc ngược lại.

Kiểm tra đ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.

  • Khả năng NET_CAPABILITY_NOT_METERED là vĩnh viễn trên mạng. Một mạng có tính năng này sẽ tự động ngắt kết nối nếu mạng đó mất tính năng này (trở thành mạng có đo lượng dữ liệu).

  • Ngược lại, NET_CAPABILITY_TEMPORARILY_NOT_METERED có 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ại onCapabilitiesChanged() để xử lý khi mạng trở về trạng thái có đo lượng dữ liệu (mất khả năng của NET_CAPABILITY_TEMPORARILY_NOT_METERED).

  • Một mạng không thể có cả NET_CAPABILITY_NOT_METEREDNET_CAPABILITY_TEMPORARILY_NOT_METERED cù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 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).

Có thể kể đến một số cách sử dụng lệnh gọi API này như:

  • Hiển thị thương hiệu 5G trong ứng dụng để làm nổi bật việc bạn đang cung cấp trải nghiệm 5G độc đáo.

  • Chỉ khi có mạng 5G thì mới có thể kích hoạt trải nghiệm 5G độc đáo trong ứng dụng. Bạn nên ghép nối quy trình kiểm tra trạng thái này với quy trình kiểm tra mức sử dụng.

  • 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 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 thấy các mạng tương ứng với các giá trị:

Loại dữ liệu trả về Mạng
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO LTE Pro LTE (5Ge) nâng cao
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ể lấy 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()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/mô-đun để phù hợp với 5G.

Chế độ 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 ở trạng thái rảnh". Ứ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à tự động điều chỉnh hành vi truyền trực tuyến. 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 số liệu ướ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 của họ thay đổi, hãy điều chỉnh hành vi của ứng dụng cho phù hợp.