|
wifi快捷快捷开关
wifi快捷快捷开关实现起开比Gprs开关简单,WifiManager有开放的API,想了解Gprs快捷开关的同学看这篇文章:http://blog.iyunv.com/u013045971/article/details/41750977
获取wifi状态:
public static boolean isWifiEnable(Context context) {
WifiManager wifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
return wifiManager.isWifiEnabled();
}
设置wifi状态:
public static void setWifiEnable(Context context, boolean enable) {
WifiManager wifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(enable);
}
那么跟Gprs开关一样,我们也需要根据监听一个标识去改变视图的状态(比如别的程序改变了wifi,你自己的视图是不是也要跟着变化呢?),之前的Gprs是通过监听database来改变视图的状态,而wifi就不需要那么麻烦了,直接通过广播来监听状态。直接在接收器中改变你的视图状态就ok了。
如下:
class ChangedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
int e = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
//这里的广播是接受到wifi的开和关状态
//WIFI_STATE_DISABLED 已关闭
//WIFI_STATE_DISABLING 正在关闭
//WIFI_STATE_ENABLED 已打开
//WIFI_STATE_ENABLING 正在打开
//WIFI_STATE_UNKNOWN 未知
switch (e) {
case WifiManager.WIFI_STATE_DISABLED:
Log.i("ABC", "_DISABLED");
break;
case WifiManager.WIFI_STATE_DISABLING:
Log.i("ABC", "_DISABLING");
break;
case WifiManager.WIFI_STATE_ENABLED:
Log.i("ABC", "_ENABLED");
break;
case WifiManager.WIFI_STATE_ENABLING:
Log.i("ABC", "_ENABLING");
break;
case WifiManager.WIFI_STATE_UNKNOWN:
Log.i("ABC", "_UNKNOWN");
break;
default:
break;
}
}
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
//这里的广播是表示wifi链接到一个正常的路由 链接到正常的路由之后才可以正常的获取wifi的 名称 ,IP,信号强度之类的参数
WifiManager manager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
Log.i("ABC", "_ok" + manager.getConnectionInfo().getSSID());
}
}
}
|
|
|