diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index daade2f43..76113aa9e 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -315,6 +315,10 @@ class CoreContext(val context: Context, coreConfig: Config) { Log.i("[Context] Answering call $call") val params = core.createCallParams(call) params?.recordFile = LinphoneUtils.getRecordingFilePathForAddress(call.remoteAddress) + if (LinphoneUtils.checkIfNetworkHasLowBandwidth(context)) { + Log.w("[Context] Enabling low bandwidth mode!") + params?.enableLowBandwidth(true) + } call.acceptWithParams(params) } @@ -376,6 +380,10 @@ class CoreContext(val context: Context, coreConfig: Config) { if (forceZRTP) { params?.mediaEncryption = MediaEncryption.ZRTP } + if (LinphoneUtils.checkIfNetworkHasLowBandwidth(context)) { + Log.w("[Context] Enabling low bandwidth mode!") + params?.enableLowBandwidth(true) + } params?.recordFile = LinphoneUtils.getRecordingFilePathForAddress(address) val call = if (params != null) { diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt index 83be3f011..22fbd8e34 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt @@ -19,6 +19,11 @@ */ package org.linphone.utils +import android.content.Context +import android.net.ConnectivityManager +import android.net.NetworkInfo +import android.telephony.TelephonyManager.* +import androidx.core.content.ContextCompat.getSystemService import java.text.DateFormat import java.text.SimpleDateFormat import java.util.* @@ -88,7 +93,10 @@ class LinphoneUtils { fun getRecordingFilePathForAddress(address: Address): String { val displayName = getDisplayName(address) - val dateFormat: DateFormat = SimpleDateFormat(RECORDING_DATE_PATTERN, Locale.getDefault()) + val dateFormat: DateFormat = SimpleDateFormat( + RECORDING_DATE_PATTERN, + Locale.getDefault() + ) val fileName = "${displayName}_${dateFormat.format(Date())}.mkv" return FileUtils.getFileStoragePath(fileName).absolutePath } @@ -96,5 +104,20 @@ class LinphoneUtils { fun getRecordingDateFromFileName(name: String): Date { return SimpleDateFormat(RECORDING_DATE_PATTERN, Locale.getDefault()).parse(name) } + + fun checkIfNetworkHasLowBandwidth(context: Context): Boolean { + val connMgr = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + val networkInfo: NetworkInfo? = connMgr.activeNetworkInfo + if (networkInfo != null && networkInfo.isConnected) { + if (networkInfo.type == ConnectivityManager.TYPE_MOBILE) { + return when (networkInfo.subtype) { + NETWORK_TYPE_EDGE, NETWORK_TYPE_GPRS, NETWORK_TYPE_IDEN -> true + else -> false + } + } + } + // In doubt return false + return false + } } }