Android 11은 앱에서 5G를 지원하는 기능을 추가합니다. 이 주제에서는 기능에 관해 설명하고 5G 관련 기능을 앱에 추가하여 사용자 환경을 개선할 수 있는 방법을 간략히 설명합니다.
5G용 빌드
5G에 참여하는 방법을 결정할 때 어떤 유형의 환경을 구축하려고 하는지 생각해 보세요. 5G에서 앱을 향상할 수 있는 몇 가지 방법에는 다음이 포함됩니다.
- 5G의 속도 및 지연 시간 개선으로 인해 현재 환경을 더 빠르고 효율적으로 자동으로 향상합니다.
- 4k 동영상을 표시하거나 고해상도 게임 애셋을 다운로드하는 등 사용자 환경을 한 단계 업그레이드합니다.
- 증가된 데이터 사용량으로도 사용자에게 많은 비용이 들지 않는다는 점을 확인한 이후 일반적으로 무제한 Wi-Fi용으로 예약된 콘텐츠를 사전에 다운로드하는 등 보통은 Wi-Fi를 통해서만 제공되는 환경을 포함합니다.
- 빠른 속도와 짧은 지연 시간으로만 작동하는 5G의 고유한 환경을 제공합니다.
5G 기능
Android 11에서는 다음과 같은 기능 변경사항 및 개선사항이 도입되었습니다.
계량 확인
NET_CAPABILITY_TEMPORARILY_NOT_METERED
는 Android 11에 추가된 기능으로, 사용 중인 네트워크가 이동통신사에서 제공한 정보를 기반으로 무제한인지 알려줍니다.
새 플래그는 NET_CAPABILITY_NOT_METERED
와 함께 사용됩니다.
기존 플래그는 네트워크가 항상 무제한인지를 나타내며 Wi-Fi와 모바일 데이터 연결에 모두 적용됩니다.
두 플래그 간의 차이는 NET_CAPABILITY_TEMPORARILY_NOT_METERED
가 네트워크 유형을 변경하지 않고도 변경될 수 있다는 점입니다. Android 11을 타겟팅하는 앱은 NET_CAPABILITY_TEMPORARILY_NOT_METERED
플래그를 사용할 수 있습니다. Android 9 이하에서 실행되는 기기에서는 OS가 플래그에 관해 보고하지 않습니다. Android 10에서 실행되는 앱의 경우 실행 중인 기기에 따라 이 플래그를 사용할 수 있습니다.
현재 네트워크가 일시적으로 또는 영구적으로 무제한인 것으로 확인되면 고해상도 콘텐츠(예: 4K 동영상)를 표시하고 로그를 업로드하며 파일을 백업하고 콘텐츠를 사전에 다운로드할 수 있습니다.
다음 섹션에서는 앱에 계량 확인을 추가하는 단계를 설명합니다.
네트워크 콜백 등록
ConnectivityManager.registerDefaultNetworkCallback()
을 사용하여 네트워크 콜백에 등록하면 NetworkCapabilities
가 변경될 때 알림을 받습니다. NetworkCallback
에서 onCapabilitiesChanged()
메서드를 재정의하여 NetworkCapabilities
의 변경사항을 감지할 수 있습니다.
registerDefaultNetworkCallback()
은 등록된 콜백이 등록되는 즉시 트리거되도록 하여 현재 상태에 관한 앱 정보를 제공합니다. 향후 콜백은 상태가 무제한에서 데이터 전송량 제한 있음으로 변경될 때(반대의 경우도 마찬가지임) 앱이 적절한 조치를 취하는 데 중요합니다.
계량 확인
네트워크 콜백에서 수신한 NetworkCapabilites
객체를 사용하여 다음 코드의 출력을 확인합니다.
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)
값이 true이면 네트워크를 무제한으로 처리할 수 있습니다.
추가 고려사항
이 기능 관련 작업 시 다음 사항에 유의하세요.
NET_CAPABILITY_TEMPORARILY_NOT_METERED
플래그를 사용하려면 Android 11 SDK에 대해 앱을 컴파일해야 합니다.NET_CAPABILITY_NOT_METERED
기능은 네트워크에서 영구적입니다. 이 기능이 있는 네트워크는 기능이 손실되면 자동으로 연결이 끊어집니다(데이터 전송량이 제한됨).반면에
NET_CAPABILITY_TEMPORARILY_NOT_METERED
는 연결 해제 없이 네트워크에서 변경될 수 있습니다. 따라서 앱은 네트워크가 데이터 전송량 제한 있음 상태로 돌아올 때 처리할onCapabilitiesChanged()
콜백을 수신 대기해야 합니다(NET_CAPABILITY_TEMPORARILY_NOT_METERED
기능 손실).네트워크는
NET_CAPABILITY_NOT_METERED
와NET_CAPABILITY_TEMPORARILY_NOT_METERED
를 둘 다 동시에 사용할 수 없습니다.
5G 감지
Android 11부터 콜백 기반 API 호출을 사용하여 기기가 5G 네트워크에 연결되어 있는지 감지할 수 있습니다. 연결이 5G NR(독립형) 네트워크인지 또는 NSA(비독립형) 네트워크인지 확인할 수 있습니다.
이 API 호출의 일부 용도에는 다음이 포함될 수 있습니다.
앱에 5G 브랜딩을 표시하여 고유한 5G 환경을 제공하고 있음을 강조표시할 수 있습니다.
5G 네트워크에 있을 때만 앱에서 고유한 5G 환경을 활성화할 수 있습니다. 이 상태 확인을 계량 확인과 페어링해야 합니다.
분석 목적으로 5G 연결을 추적할 수 있습니다.
5G 기기 없이 5G 감지를 테스트하기 위해 Android SDK 에뮬레이터에 추가된 기능을 사용할 수 있습니다.
5G 감지
TelephonyManager.listen()
을 호출해 LISTEN_DISPLAY_INFO_CHANGED
를 전달하여 사용자가 5G 네트워크에 연결되어 있는지 확인합니다. onDisplayInfoChanged()
메서드를 재정의하여 표시에 사용되는 네트워크 유형을 결정합니다. 한 가지 예외로, 이동통신사에서 밀리미터파(mmWave) 네트워크의 RAT로 5G를 표시하도록 선택하면 OVERRIDE_NETWORK_TYPE_NR_NSA
가 반환됩니다.
다음 표는 값에 상응하는 네트워크를 보여줍니다.
반환 유형 | 네트워크 |
---|---|
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO |
Advanced pro LTE(5Ge) |
OVERRIDE_NETWORK_TYPE_NR_NSA |
5G Sub-6 네트워크의 경우 NR(5G) |
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE |
5G mmWave 네트워크의 경우 (5G+/5G UW) |
대역폭 추정
대역폭 추정에서는 계량을 결정할 때 사용하는 NetworkCapabilities
객체를 활용합니다. 이 객체를 사용하여 대역폭 추정치를 얻을 수 있습니다.
Android 11에서는 5G를 수용할 수 있는 프레임워크 지원 및 플랫폼/모뎀 버그 수정으로 업그레이드되어 대역폭 추정 메서드 getLinkDownstreamBandwidthKbps()
및 getLinkUpstreamBandwidthKbps()
의 신뢰성 및 정확성이 향상되었습니다.
대역폭 기본값은 앱 시작에 관해서만 가이드를 제공합니다. 이는 '유휴 상태일 때 시작' 시나리오에 도움이 됩니다. 앱은 사용자가 앱에 참여하기 시작하면 앱에 표시되는 사항을 측정하고 스트리밍 동작을 동적으로 조정해야 합니다. 예를 들어 시작 시 대역폭 추정을 기반으로 제공할 동영상 해상도를 선택할 수 있습니다. 사용자가 앱을 사용할 때 추정치를 계속 확인합니다. 연결 유형 및 강도가 변경되면 이에 따라 앱의 동작을 조정합니다.