android获取wifi开关,Android WiFi开发(一)--WiFi开关与状态监听
之前开发了一个WiFi,热点相关的应用。因为对这方面也不熟悉,刚开始找资料看书,但看明白实现时,发现随着android版本更新,相关api有较大改动,之前的代码不能用。经过一番探索,最后实现出来了,现在把它记录下来,希望能给需要的人一些帮助。
首先来讲WiFi开发相关,那第一步肯定是如何来控制WiFi打开关闭状态,以及如何来监听其状态变化。
WiFi连接控制类--WiFiManager
从官网参考可以知道它以下几个作用:
获取配置好的网络,也就是之前连接过的WiFi;
对当前活动的WiFi网络建立新连接或断开,可以查询有关网络状态;
周围扫描到的接入点,对应类为ScanResult;
定义了在Wi-Fi状态改变后发出广播的intent action。
可以看出主要是用它来控制监听WiFi状态
打开关闭WiFi
对WiFi进行控制要声明相关权限
接着获取WifiManager
mWifiManager= (WifiManager) getApplicationContext()
.getSystemService(Context.WIFI_SERVICE);
注意这里必须使用Application的上下文,那在fragment中获取的话通过getActivity().getApplicationContext(),因为碎片中无法直接获取Application Context
获取到WifiManager后就可以通过isWifiEnabled()判断是否打开,setWifiEnabled(boolean enabled)打开或关闭wifi,它的返回值说明操作结果,可能操作失败
//set wifi switch state
swwifi.setChecked(mWifiManager.isWifiEnabled());
swwifi.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mWifiManager.setWifiEnabled(isChecked);
}
});
这里简单的通过个switch显示和控制开关状态
WiFi状态监听
上面只是能在应用中控制wifi开关,但如果在外面wifi发生变化,应用内没监听的话,那相关显示就错误了
监听是通过WifiManager定义的一些action动态注册广播监听(只能动态注册)
//注册接收器
private void registerBroadcast() {
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction()== WifiManager.WIFI_STATE_CHANGED_ACTION) {
switch (intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WIFI_STATE_UNKNOWN)) {
case WIFI_STATE_DISABLED:{
Toast.makeText(context, "WiFi disabled", Toast.LENGTH_SHORT).show();
swwifi.setChecked(false);
break;
}
case WIFI_STATE_DISABLING:{
Toast.makeText(context, "WiFi disabling", Toast.LENGTH_SHORT).show();
break;
}
case WIFI_STATE_ENABLED :{
Toast.makeText(context, "WiFi enabled", Toast.LENGTH_SHORT).show();
swwifi.setChecked(true);
break;
}
case WIFI_STATE_ENABLING:{
Toast.makeText(context, "WiFi enabling", Toast.LENGTH_SHORT).show();
break;
}
case WIFI_STATE_UNKNOWN:{
Toast.makeText(context, "WiFi state unknown", Toast.LENGTH_SHORT).show();
break;
}
}
}
}
}, filter);
}
其他一些状态也基本是通过动态注册广播监听
上面有一点,刚打开注册广播时立即收到一条当前状态的广播
android获取wifi开关,Android WiFi开发(一)--WiFi开关与状态监听相关推荐
- android 通话状态监听(自定义接听挂断按钮与通话界面,根据公司的业务逻辑可以实现自己的来电秀功能)...
前言: 因为公司需求,要自定义一款来电秀的app当做周边产品来配合主营的app业务. 之前因为赶项目,没时间整理这块,现在项目告一段落了,现在回头看看感觉这个功能还是挺有意思的,比较有针对性.电话呼入 ...
- 虾扯蓝牙(一)获取蓝牙当前状态,监听蓝牙手动开关,代码开关蓝牙
前言 半年没有更新博客了,首要原因就是我太懒了,其次是换了新工作,新环境,一直都处于适应与学习阶段,因为涉及到的领域以前都是没接触的–有幸外派到海尔做智能家居,第一次到这种大的公司来敲代码,很多东西都 ...
- Android短信的发送和广播接收者实现短信的监听
Android短信的发送和广播接收者实现短信的监听 要注意Android清单中权限的设置以及广播的注册监听实现 以下就是 Android清单的XML AndroidManifest.xml < ...
- android 蓝牙电话号码,Android拨打电话和蓝牙状态监听
一.拨打电话 权限管理 思路 通过Intent设置Action为ACTION_DIAL或者 ACTION_CALL,通过intent启动直接拨打电话或者打开拨打电话界面. 示例代码 直接拨打电话 /* ...
- Android 通过WIFI状态监听广播,判断进入指定wifi范围
原文地址:http://blog.csdn.net/kongxiuqi/article/details/52524500 --------------------------------------- ...
- android获取ip方法,Android开发准确获取手机IP地址的两种方式
最近看了好多网上获取IP地址的例子,发现好多都不完全准确,这里我写一下获取ip地址的两种方式. 比如微信支付,后台在做接口的时候,要求App端传入IP地址,我们需要判断是网络环境,WI-FI还是3G, ...
- android获取安卓版本,Android开发:获取安卓App版本号的方法步骤
今天国庆节,在这举国欢庆的日子里,发一篇博文留念一下这个特殊的日子,国庆依然奋战在工作一线. 在Android开发过程中,想要开发一个完整功能的App,各个地方的内容都要涉及到,比如获取App的系统版 ...
- android 电视盒子 遥控器 获取,Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听...
简单记录下android 盒子开发遥控器的监听 ,希望能帮到新入门的朋友们 不多说,直接贴代码 public class MainActivity extends Activity { private ...
- android 监听wifi的连接状态,Android判断wifi状态 监听wifi连接
一.添加权限 二.注册监听广播 注册监听有两种方式 1.AndroidMainfest.xml 中注册 2.在代码中注册 IntentFilter filter = new IntentFilter( ...
最新文章
- CVPR2020 | 商汤-港中文等提出PV-RCNN:3D目标检测新网络
- 通过Exchange online实现HAB功能
- AFAB 科目要求一个成本会计分配
- C++学习笔记-----函数调用时的决议:名字查找,重载决议,可访问性检测
- 零拷贝概念 -- linux内核
- 让其他CMS黯然失色的we7CMS
- 安装依赖以及页面解析
- zabbix监控nginx连接数
- 吃瓜笔记 | 旷视研究院:被遮挡人脸区域检测的技术细节(PPT+视频)
- 从maya中 导入物体 到Uniyt3D 规范 整理
- AutoCAD工具栏中没有工具栏选项
- 无法正常进入Windows也能开启Windows内核调试
- 【数字图像处理】基于SeetaFace2的人脸检测
- windows10,忘记密码,不用u盘就可以修改密码
- 123457123456#0#-----com.yuming.baoBaoAiXueXi01hanzi--前拼后广--幼儿园宝宝学汉字
- Python学习之集合练习(协助学生做问卷调查)
- xfce-因为面板在 kiosk 模式下运行,所以不允许作为普通用户的您更改面板配置
- 图像放缩之双立方插值
- Linux 好书、经典书籍推荐
- 深度学习 yolov5等结构图
热门文章
- 线下活动 | 聚焦分布式高可用的消息队列
- 【Python】ConnectionResetError [WinError 10054] 远程主机强迫关闭了一个现有的连接
- vue+echarts实现多个仪表盘图表
- npm出现UNMET DEPENDENCY的一种情况
- js键盘监听事件及键盘键码对照表
- 使用Quantlib,通过YTM计算债券净值
- android 实现ble蓝牙自动配对连接
- SSD: Single Shot MultiBox Detector 模型fine-tune和网络架构
- 计算机的硬盘有几个分区,电脑硬盘分几个区合适,电脑硬盘怎么分区最合理?
- MATLAB读取文件中的所有同类型数据,并记录其峰值