package com.kenny.openimgur.util;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.PowerManager;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLED;
import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED;
import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_WHITELISTED;
/**
* Created by kcampagna on 9/1/15.
*/
public class NetworkUtils {
private static final String TAG = NetworkUtils.class.getSimpleName();
/**
* Returns the current {@link NetworkInfo} of the device
*
* @param context
* @return
*/
public static NetworkInfo getNetworkInfo(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo();
}
/**
* Returns if the device is connected to the internet
*
* @param context
* @return
*/
public static boolean hasInternet(Context context) {
NetworkInfo info = getNetworkInfo(context);
return (info != null && info.isConnected());
}
/**
* Returns if the device is connected to WiFi
*
* @param context
* @return
*/
public static boolean isConnectedToWiFi(Context context) {
NetworkInfo info = getNetworkInfo(context);
return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_WIFI);
}
public static void releaseWakeLock(@Nullable PowerManager.WakeLock wakeLock) {
try {
if (wakeLock != null && wakeLock.isHeld()) wakeLock.release();
} catch (Exception ex) {
LogUtil.e(TAG, "Unable to release wakelock", ex);
}
}
/**
* Returns if the users device currently has data saver enabled
*
* @param context
* @return
*/
public static boolean hasDataSaver(@NonNull Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) return false;
ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connMgr.isActiveNetworkMetered()) {
switch (connMgr.getRestrictBackgroundStatus()) {
case RESTRICT_BACKGROUND_STATUS_ENABLED:
// Data saver is enabled
return true;
case RESTRICT_BACKGROUND_STATUS_WHITELISTED:
case RESTRICT_BACKGROUND_STATUS_DISABLED:
// Data saver is either disabled, or the app has been white listed
return false;
}
}
return false;
}
}