package kc.spark.pixels.android.util;
import static org.solemnsilence.util.Py.truthy;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.DhcpInfo;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.text.format.Formatter;
public class NetConnectionHelper {
final Context context;
final WifiManager wifiManager;
final ConnectivityManager connManager;
public NetConnectionHelper(Context context) {
// avoid retaining any context but the application context unless truly
// necessary
this.context = context.getApplicationContext();
this.wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
this.connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
}
public String getSSID() {
WifiInfo wifiInfo = getWifiInfo();
if (wifiInfo == null || !isConnectedViaWifi()) {
return "";
}
return removeQuotes(wifiInfo.getSSID());
}
public boolean hasDataConnection() {
NetworkInfo activeNetworkInfo = connManager.getActiveNetworkInfo();
if (activeNetworkInfo != null) {
return activeNetworkInfo.isConnected();
} else {
return false;
}
}
public boolean isConnectedViaWifi() {
NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (networkInfo == null) {
return false;
} else {
return networkInfo.isConnected();
}
}
private WifiInfo getWifiInfo() {
return wifiManager.getConnectionInfo();
}
public String getGatewayIp() {
DhcpInfo dhcpInfo = wifiManager.getDhcpInfo();
if (dhcpInfo == null) {
return null;
} else {
return Formatter.formatIpAddress(dhcpInfo.gateway);
}
}
// in Jellybean, SSIDs can have quotes around them
private static String removeQuotes(String ssid) {
if (!truthy(ssid)) {
return "";
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
if (ssid.startsWith("\"") && ssid.endsWith("\"")) {
ssid = ssid.substring(1, ssid.length() - 1);
}
}
return ssid;
}
}