From 5ed65b2e98fcb60c72e9f338fdbd98d90732e84c Mon Sep 17 00:00:00 2001 From: Jonas Oreland Date: Wed, 6 May 2020 09:37:31 +0200 Subject: [PATCH] Add 5G detection to android_network_monitor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch adds detection of 5G to andoird_network_monitor using the TelephonyManager.NETWORK_TYPE_NR. It also adds - TelephonyManager.NETWORK_TYPE_GSM as 2G - TelephonyManager.NETWORK_TYPE_TD_SCDMA as 3G - TelephonyManager.NETWORK_TYPE_IWLAN as 4G note: AdapterTypeFromNetworkType still return rtc::ADAPTER_TYPE_CELLULAR for all cellular connections (changing that is a next step). Bug: webrtc:11473 Change-Id: If2e681e10b24f46ea0071db0cdba758a8c4e7ee2 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174500 Reviewed-by: Sami Kalliomäki Commit-Queue: Jonas Oreland Cr-Commit-Position: refs/heads/master@{#31171} --- sdk/android/api/org/webrtc/NetworkMonitorAutoDetect.java | 6 ++++++ sdk/android/src/jni/android_network_monitor.cc | 4 ++++ sdk/android/src/jni/android_network_monitor.h | 1 + 3 files changed, 11 insertions(+) diff --git a/sdk/android/api/org/webrtc/NetworkMonitorAutoDetect.java b/sdk/android/api/org/webrtc/NetworkMonitorAutoDetect.java index 0ac469c1de..dbea840710 100644 --- a/sdk/android/api/org/webrtc/NetworkMonitorAutoDetect.java +++ b/sdk/android/api/org/webrtc/NetworkMonitorAutoDetect.java @@ -50,6 +50,7 @@ public class NetworkMonitorAutoDetect extends BroadcastReceiver { CONNECTION_UNKNOWN, CONNECTION_ETHERNET, CONNECTION_WIFI, + CONNECTION_5G, CONNECTION_4G, CONNECTION_3G, CONNECTION_2G, @@ -798,6 +799,7 @@ public class NetworkMonitorAutoDetect extends BroadcastReceiver { case TelephonyManager.NETWORK_TYPE_CDMA: case TelephonyManager.NETWORK_TYPE_1xRTT: case TelephonyManager.NETWORK_TYPE_IDEN: + case TelephonyManager.NETWORK_TYPE_GSM: return ConnectionType.CONNECTION_2G; case TelephonyManager.NETWORK_TYPE_UMTS: case TelephonyManager.NETWORK_TYPE_EVDO_0: @@ -808,9 +810,13 @@ public class NetworkMonitorAutoDetect extends BroadcastReceiver { case TelephonyManager.NETWORK_TYPE_EVDO_B: case TelephonyManager.NETWORK_TYPE_EHRPD: case TelephonyManager.NETWORK_TYPE_HSPAP: + case TelephonyManager.NETWORK_TYPE_TD_SCDMA: return ConnectionType.CONNECTION_3G; case TelephonyManager.NETWORK_TYPE_LTE: + case TelephonyManager.NETWORK_TYPE_IWLAN: return ConnectionType.CONNECTION_4G; + case TelephonyManager.NETWORK_TYPE_NR: + return ConnectionType.CONNECTION_5G; default: return ConnectionType.CONNECTION_UNKNOWN_CELLULAR; } diff --git a/sdk/android/src/jni/android_network_monitor.cc b/sdk/android/src/jni/android_network_monitor.cc index 0b1a4432ed..0f02d179e7 100644 --- a/sdk/android/src/jni/android_network_monitor.cc +++ b/sdk/android/src/jni/android_network_monitor.cc @@ -48,6 +48,9 @@ static NetworkType GetNetworkTypeFromJava( if (enum_name == "CONNECTION_WIFI") { return NetworkType::NETWORK_WIFI; } + if (enum_name == "CONNECTION_5G") { + return NetworkType::NETWORK_5G; + } if (enum_name == "CONNECTION_4G") { return NetworkType::NETWORK_4G; } @@ -81,6 +84,7 @@ static rtc::AdapterType AdapterTypeFromNetworkType(NetworkType network_type) { return rtc::ADAPTER_TYPE_ETHERNET; case NETWORK_WIFI: return rtc::ADAPTER_TYPE_WIFI; + case NETWORK_5G: case NETWORK_4G: case NETWORK_3G: case NETWORK_2G: diff --git a/sdk/android/src/jni/android_network_monitor.h b/sdk/android/src/jni/android_network_monitor.h index 81647bd307..ee84588d7e 100644 --- a/sdk/android/src/jni/android_network_monitor.h +++ b/sdk/android/src/jni/android_network_monitor.h @@ -31,6 +31,7 @@ enum NetworkType { NETWORK_UNKNOWN, NETWORK_ETHERNET, NETWORK_WIFI, + NETWORK_5G, NETWORK_4G, NETWORK_3G, NETWORK_2G,