mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-23 02:10:44 +01:00
Add VPN/metered connection status during FCM receives.
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
package org.thoughtcrime.securesms.util
|
||||
|
||||
/**
|
||||
* Information about the current network status by our best guess. This information
|
||||
* isn't guaranteed to be 100% accurate.
|
||||
*/
|
||||
data class NetworkStatus(val isOnVpn: Boolean, val isMetered: Boolean) {
|
||||
override fun toString(): String {
|
||||
return "[isOnVpn: $isOnVpn, isMetered: $isMetered]"
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,10 @@ package org.thoughtcrime.securesms.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.Network;
|
||||
import android.net.NetworkCapabilities;
|
||||
import android.net.NetworkInfo;
|
||||
import android.os.Build;
|
||||
import android.telephony.TelephonyManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -38,7 +41,7 @@ public final class NetworkUtil {
|
||||
if (SignalStore.internalValues().callingBandwidthMode() != CallManager.BandwidthMode.NORMAL) {
|
||||
return SignalStore.internalValues().callingBandwidthMode();
|
||||
}
|
||||
|
||||
|
||||
return useLowBandwidthCalling(context, networkAdapter) ? CallManager.BandwidthMode.LOW : CallManager.BandwidthMode.NORMAL;
|
||||
}
|
||||
|
||||
@@ -78,6 +81,22 @@ public final class NetworkUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static @NonNull NetworkStatus getNetworkStatus(@NonNull Context context) {
|
||||
ConnectivityManager connectivityManager = ServiceUtil.getConnectivityManager(context);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
Network network = connectivityManager.getActiveNetwork();
|
||||
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
|
||||
|
||||
boolean onVpn = capabilities != null && capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN);
|
||||
boolean isNotMetered = capabilities == null || capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
|
||||
|
||||
return new NetworkStatus(onVpn, !isNotMetered);
|
||||
} else {
|
||||
return new NetworkStatus(false, false);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean useLowBandwidthCalling(@NonNull Context context, @NonNull PeerConnection.AdapterType networkAdapter) {
|
||||
switch (SignalStore.settings().getCallBandwidthMode()) {
|
||||
case HIGH_ON_WIFI:
|
||||
|
||||
Reference in New Issue
Block a user