FreeRDP
Loading...
Searching...
No Matches
NetworkStateReceiver.java
1/*
2 Network State Receiver
3
4 Copyright 2013 Thincast Technologies GmbH, Author: Martin Fleisz
5
6 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
7 If a copy of the MPL was not distributed with this file, You can obtain one at
8 http://mozilla.org/MPL/2.0/.
9*/
10
11package com.freerdp.freerdpcore.application;
12
13import android.content.Context;
14import android.net.ConnectivityManager;
15import android.net.Network;
16import android.net.NetworkCapabilities;
17import android.net.NetworkRequest;
18import android.os.Build;
19import android.util.Log;
20
21import androidx.annotation.NonNull;
22
24{
25 private static final String TAG = "NetworkStateReceiver";
26
27 public static boolean isMeteredNetwork(Context context)
28 {
29 ConnectivityManager cm =
30 (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
31 return cm != null && cm.isActiveNetworkMetered();
32 }
33
34 public static void registerNetworkCallback(Context context)
35 {
36 ConnectivityManager cm =
37 (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
38 if (cm == null)
39 return;
40
41 ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback() {
42 private void update(String event)
43 {
44 GlobalApp.IsMeteredNetwork = isMeteredNetwork(context);
45 Log.d(TAG, event + " - IsMeteredNetwork=" + GlobalApp.IsMeteredNetwork);
46 }
47
48 @Override
49 public void onCapabilitiesChanged(@NonNull Network n, @NonNull NetworkCapabilities c)
50 {
51 update("Capabilities Changed");
52 }
53 @Override public void onAvailable(@NonNull Network n)
54 {
55 update("Available");
56 }
57 @Override public void onLost(@NonNull Network n)
58 {
59 update("Lost");
60 }
61 };
62
63 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
64 cm.registerDefaultNetworkCallback(callback);
65 else
66 cm.registerNetworkCallback(new NetworkRequest.Builder().build(), callback);
67 }
68}