设为首页 收藏本站
查看: 994|回复: 0

[经验分享] 025、WiFi服务

[复制链接]

尚未签到

发表于 2015-10-1 07:53:57 | 显示全部楼层 |阅读模式
WiFi的打开与关闭

WiFiManager状态常数及意义




WifiManager状态常数意义
WifiManager.WIFI_STATE_ENABLEDwifi已经打开
WifiManager.WIFI_STATE_ENABLINGwifi打开中
WifiManager.WIFI_STATE_DISABLINGwifi关闭中
WifiManager.WIFI_STATE_DISABLEDwifi已经关闭
WifiManager.WIFI_STATE_UNKNOWN未知的Wifi状态






通过WiFiManager打开WiFi,mWiFiManager.setWifiEnabled(true)的状态变化过程:

1、WifiManager.WIFI_STATE_DISABLED

2、WifiManager.WIFI_STATE_ENABLING

3、WifiManager.WIFI_STATE_ENABLED







通过WiFiManager关闭WiFi,mWiFiManager.setWifiEnabled(false)的状态变化过程:

1、WifiManager.WIFI_STATE_ENABLED

2、WifiManager.WIFI_STATE_DISABLING

3、WifiManager.WIFI_STATE_DISABLED





如果状态处于WIFI_STATE_ENABLING时,运行一次“打开”功能,将导致错误,因此,程序必须对这类的事件状态进行捕捉,否则,就不知道WiFi究竟何时可以打开完毕,而手机与WiFi AP的连接也有访问的时间,并非是马上单击就能立即反应其打开结果。



必须加权限:




    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
  


代码如下:






       cb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (cb.isChecked()) {
// 尝试打开wifi服务
try {
if (!wifiManager.isWifiEnabled()
&& wifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLING) {
// wifi没有打开,并且没有处于打开过程中
if (wifiManager.setWifiEnabled(true)) {
tv.setText(getResources().getString(
R.string.str_start_wifi_done));
cb.setText(getResources().getString(
R.string.str_checked));
} else {
tv.setText(getResources().getString(
R.string.str_start_wifi_failed));
cb.setText(getResources().getString(
R.string.str_uncheck));
cb.setChecked(false);
}
} else {
int strId;
switch (wifiManager.getWifiState()) {
case WifiManager.WIFI_STATE_ENABLING:
// wifi正在打开中...
strId = R.string.str_wifi_enabling;
break;
case WifiManager.WIFI_STATE_DISABLING:
// wifi正在关闭中...
strId = R.string.str_wifi_disabling;
break;
case WifiManager.WIFI_STATE_ENABLED:
// wifi已经关闭
strId = R.string.str_wifi_enabled;
break;
case WifiManager.WIFI_STATE_UNKNOWN:
// wifi状态没有
default:
strId = R.string.str_wifi_unknow;
break;
}
tv.setText(getResources().getString(
R.string.str_start_wifi_failed)
+ "::" + getResources().getString(strId));
cb.setText(getResources().getString(
R.string.str_checked));
cb.setChecked(false);
}
} catch (Exception e) {
Log.e("zyh", e.toString());
}
} else {
// 尝试关闭wifi服务
try {
// 判断wifi状态是否已经启动
if (wifiManager.isWifiEnabled()) {
// 关闭wifi
if (wifiManager.setWifiEnabled(false)) {
tv.setText(getResources().getString(
R.string.str_stop_wifi_done));
cb.setText(getResources().getString(
R.string.str_uncheck));
} else {
tv.setText(getResources().getString(
R.string.str_stop_wifi_failed));
cb.setText(getResources().getString(
R.string.str_checked));
cb.setChecked(true);
}
} else {
int strId;
switch (wifiManager.getWifiState()) {
case WifiManager.WIFI_STATE_ENABLING:
// wifi正在打开中...
strId = R.string.str_wifi_enabling;
break;
case WifiManager.WIFI_STATE_DISABLING:
// wifi正在关闭中...
strId = R.string.str_wifi_disabling;
break;
case WifiManager.WIFI_STATE_DISABLED:
// wifi已经关闭
strId = R.string.str_wifi_disabled;
break;
case WifiManager.WIFI_STATE_UNKNOWN:
// wifi状态没有
default:
strId = R.string.str_wifi_unknow;
break;
}
tv.setText(getResources().getString(
R.string.str_stop_wifi_failed)
+ "::" + getResources().getString(strId));
cb.setText(getResources().getString(
R.string.str_uncheck));
cb.setChecked(true);
}
} catch (Exception e) {
Log.e("zyh", e.toString());
}
}
}
});
  





扫描附件可用WiFi:




                // 设置WifiConfiguration对象
List<WifiConfiguration> configuredNetworks = wifiManager
.getConfiguredNetworks();
if (configuredNetworks != null && configuredNetworks.size() > 0) {
((ListView) findViewById(R.id.lv))
.setAdapter(new MyAdapter(MainActivity.this,
configuredNetworks));
} else {
Toast.makeText(MainActivity.this, "没有可用wifi", 0).show();
}
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-121100-1-1.html 上篇帖子: 英特尔my wifi技术无法启用的解决方法 下篇帖子: 在Android中扫描wifi热点演示实例教程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表