//package eecs.umich.threegtest;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.net.ConnectivityManager;
import android.telephony.TelephonyManager;
public class ConnectivityTester {
//holds the threegtest that extends Activity
private Activity activity;
//WIFI or MOBIlE variables
private ConnectivityManager connectivityManager;
private int networkType;
private String networkTypeName;
//Mostly MOBILE variables
private TelephonyManager telephonyManager;
private int mobileNetworkType;
private String mobileNetworkTypeName;
private String networkOperatorName;
private String deviceID;
private boolean networkStatus;
public ConnectivityTester(Activity activity){
this.activity = activity;
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
setup();
/*
getNetworkTypeName();
getMobileNetworkTypeName();
System.out.print("Connected to: ");
if (networkTypeName == null)
System.out.println("Nothing");
else
System.out.println(networkTypeName);
if (mobileNetworkTypeName != null) {
System.out.println("Mobile Network Type: " + mobileNetworkTypeName);
}
System.out.println("Carrier: " + networkOperatorName);
setNetworkStatus(true);
System.out.println("Network status: " + networkStatus);
setNetworkStatus(false);
System.out.println("Network status: " + networkStatus);
System.out.println("Done");
//getNetworkTypeName();
*
*/
}
//initializes variables
private void setup() {
networkType = -1;
mobileNetworkType = -1;
networkTypeName = null;
mobileNetworkTypeName = null;
networkOperatorName = null;
networkStatus = false;
deviceID = null;
connectivityManager = ( ConnectivityManager ) activity.getSystemService( Context.CONNECTIVITY_SERVICE );
telephonyManager = ( TelephonyManager ) activity.getSystemService( Context.TELEPHONY_SERVICE );
}
//returns true if currently connected and false otherwise
public boolean isConnected() {
try {
return connectivityManager.getActiveNetworkInfo().isConnected();
}
catch (NullPointerException npe) {
return false;
}
}
//returns an integer indicating the current network type
//returns -1 if not connected
public int getNetworkType() {
if (networkType != -1) {
return networkType;
}
else {
if (isConnected()) {
networkType = connectivityManager.getActiveNetworkInfo().getType();
}
else {
networkType = -1;
}
}
return networkType;
}
//Returns network type name String ("WIFI" OR "MOBILE")
//if not connected, return null
public String getNetworkTypeName() {
System.out.println("A bay bay");
if (networkTypeName != null) {
return networkTypeName;
}
else {
System.out.println("Hey");
if (isConnected()) {
networkTypeName = connectivityManager.getActiveNetworkInfo().getTypeName();
}
else {
networkTypeName = null;
}
}
return networkTypeName;
}
//returns an integer corresponding to appropriate mobile network type
//return -1 if not connected
public int getMobileNetworkType() {
if (isConnected()) {
if (mobileNetworkType == -1) {
mobileNetworkType = telephonyManager.getNetworkType();
}
}
else {
mobileNetworkType = -1;
}
return mobileNetworkType;
}
//returns String containing the mobile network name
//returns null if not connected or no mobile connection
public String getMobileNetworkTypeName() {
getNetworkType();
if (isConnected() && networkType == ConnectivityManager.TYPE_MOBILE ) {
if (mobileNetworkTypeName == null) {
getMobileNetworkType();
switch (mobileNetworkType) {
case TelephonyManager.NETWORK_TYPE_UNKNOWN:
mobileNetworkTypeName = "UNKNOWN";
break;
case TelephonyManager.NETWORK_TYPE_GPRS:
mobileNetworkTypeName = "GPRS";
break;
case TelephonyManager.NETWORK_TYPE_EDGE:
mobileNetworkTypeName = "EDGE";
break;
case TelephonyManager.NETWORK_TYPE_UMTS:
mobileNetworkTypeName = "UMTS";
break;
default:
mobileNetworkTypeName = "MOBILE";
}
}
}
else {
mobileNetworkTypeName = null;
}
return mobileNetworkTypeName;
}
//returns carrier type
public String getNetworkOperator() {
if (networkOperatorName == null) {
networkOperatorName = telephonyManager.getNetworkOperatorName();
}
return networkOperatorName;
}
public boolean getNetworkStatus() {
return networkStatus;
}
public void setNetworkStatus (boolean status) {
networkStatus = status;
}
public String getDeviceID () {
if (deviceID == null) {
deviceID = telephonyManager.getDeviceId();
}
return deviceID;
}
//determines if currently connected to the internet
//if user is not connected, he/she is asked to connect to the internet via an alert
//dialog box and the app closes
public void detectInternetConnection () {
if (!isConnected()) {
System.out.println("NOT CONNECTED");
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder
.setMessage("No Internet Connection Detected! Please fix and try again.")
.setCancelable(false)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
activity.finish();
}
}
)
.setTitle("Internet Connection Problem")
.show();
}
else {
System.out.println("Internet Connection Detected");
}
}
}