/*
* Copyright (C) 2013 Sasha Vasko <sasha at aftercode dot net>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.wifiafterconnect.util;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
public class WifiTools {
private static WifiTools instance = null;
protected WifiManager wifiMan = null;
protected Context context;
private WifiTools (Context context) {
this.context = context;
if (context != null)
wifiMan = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
}
public static WifiTools getInstance(Context ctx) {
if (instance == null)
instance = new WifiTools(ctx.getApplicationContext());
return instance;
}
public enum Action {
DEFAULT, ENABLE, DISABLE, KEEP;
public static Action parse(final String string) {
if (string != null) {
for (Action a : Action.values())
if (string.equalsIgnoreCase(a.toString()))
return a;
}
return DEFAULT;
}
public boolean perform (Context context) {
if (this == DISABLE)
WifiTools.disableWifi (context);
else if (this == ENABLE)
WifiTools.enableWifi (context);
return (this != DEFAULT);
}
}
public void disableWifi() {
setWifiEnabled(false);
}
public void enableWifi() {
setWifiEnabled(true);
}
public void setWifiEnabled(boolean enable) {
if (wifiMan != null) {
try {
wifiMan.setWifiEnabled(enable);
}catch (SecurityException e) {
// Stupid Galaxy Tab requires CHANGE_NETWORK_STATE permission,
// god knows what other devices might have - better add the handler
// see http://kmansoft.com/2011/12/05/wifi-manager-2-1-6/
e.printStackTrace();
}
}
}
public boolean isWifiEnabled() {
return wifiMan != null ? wifiMan.isWifiEnabled() : false;
}
public static void disableWifi(Context context) {
setWifiEnabled(context, false);
}
public static void enableWifi(Context context) {
setWifiEnabled(context, true);
}
public static void setWifiEnabled(Context context, boolean enable) {
if (context != null) {
WifiManager wifiMan = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
if (wifiMan != null) {
try {
wifiMan.setWifiEnabled(enable);
}catch (SecurityException e) {
e.printStackTrace();
}
}
}
}
public static boolean isWifiEnabled(Context context) {
if (context != null) {
WifiManager wifiMan = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
if (wifiMan != null)
return wifiMan.isWifiEnabled();
}
return false;
}
public static String getSSID(Context context) {
if (context != null) {
WifiManager wifiMan = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
if (wifiMan != null) {
WifiInfo info = wifiMan.getConnectionInfo();
if (info != null) {
return info.getSSID();
}
}
}
return null;
}
public static boolean isWifiConnected (Context context){
if (context != null) {
ConnectivityManager connMan = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connMan != null){
NetworkInfo netInfo = connMan.getActiveNetworkInfo();
return (netInfo != null && netInfo.getType() == ConnectivityManager.TYPE_WIFI && netInfo.isConnected());
}
}
return false;
}
public boolean isWifiConnected (){
return isWifiConnected (context);
}
}