之前开发了一个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开关与状态监听相关推荐

  1. android 通话状态监听(自定义接听挂断按钮与通话界面,根据公司的业务逻辑可以实现自己的来电秀功能)...

    前言: 因为公司需求,要自定义一款来电秀的app当做周边产品来配合主营的app业务. 之前因为赶项目,没时间整理这块,现在项目告一段落了,现在回头看看感觉这个功能还是挺有意思的,比较有针对性.电话呼入 ...

  2. 虾扯蓝牙(一)获取蓝牙当前状态,监听蓝牙手动开关,代码开关蓝牙

    前言 半年没有更新博客了,首要原因就是我太懒了,其次是换了新工作,新环境,一直都处于适应与学习阶段,因为涉及到的领域以前都是没接触的–有幸外派到海尔做智能家居,第一次到这种大的公司来敲代码,很多东西都 ...

  3. Android短信的发送和广播接收者实现短信的监听

    Android短信的发送和广播接收者实现短信的监听  要注意Android清单中权限的设置以及广播的注册监听实现 以下就是 Android清单的XML AndroidManifest.xml < ...

  4. android 蓝牙电话号码,Android拨打电话和蓝牙状态监听

    一.拨打电话 权限管理 思路 通过Intent设置Action为ACTION_DIAL或者 ACTION_CALL,通过intent启动直接拨打电话或者打开拨打电话界面. 示例代码 直接拨打电话 /* ...

  5. Android 通过WIFI状态监听广播,判断进入指定wifi范围

    原文地址:http://blog.csdn.net/kongxiuqi/article/details/52524500 --------------------------------------- ...

  6. android获取ip方法,Android开发准确获取手机IP地址的两种方式

    最近看了好多网上获取IP地址的例子,发现好多都不完全准确,这里我写一下获取ip地址的两种方式. 比如微信支付,后台在做接口的时候,要求App端传入IP地址,我们需要判断是网络环境,WI-FI还是3G, ...

  7. android获取安卓版本,Android开发:获取安卓App版本号的方法步骤

    今天国庆节,在这举国欢庆的日子里,发一篇博文留念一下这个特殊的日子,国庆依然奋战在工作一线. 在Android开发过程中,想要开发一个完整功能的App,各个地方的内容都要涉及到,比如获取App的系统版 ...

  8. android 电视盒子 遥控器 获取,Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听...

    简单记录下android 盒子开发遥控器的监听 ,希望能帮到新入门的朋友们 不多说,直接贴代码 public class MainActivity extends Activity { private ...

  9. android 监听wifi的连接状态,Android判断wifi状态 监听wifi连接

    一.添加权限 二.注册监听广播 注册监听有两种方式 1.AndroidMainfest.xml 中注册 2.在代码中注册 IntentFilter filter = new IntentFilter( ...

最新文章

  1. CVPR2020 | 商汤-港中文等提出PV-RCNN:3D目标检测新网络
  2. 通过Exchange online实现HAB功能
  3. AFAB 科目要求一个成本会计分配
  4. C++学习笔记-----函数调用时的决议:名字查找,重载决议,可访问性检测
  5. 零拷贝概念 -- linux内核
  6. 让其他CMS黯然失色的we7CMS
  7. 安装依赖以及页面解析
  8. zabbix监控nginx连接数
  9. 吃瓜笔记 | 旷视研究院:被遮挡人脸区域检测的技术细节(PPT+视频)
  10. 从maya中 导入物体 到Uniyt3D 规范 整理
  11. AutoCAD工具栏中没有工具栏选项
  12. 无法正常进入Windows也能开启Windows内核调试
  13. 【数字图像处理】基于SeetaFace2的人脸检测
  14. windows10,忘记密码,不用u盘就可以修改密码
  15. 123457123456#0#-----com.yuming.baoBaoAiXueXi01hanzi--前拼后广--幼儿园宝宝学汉字
  16. Python学习之集合练习(协助学生做问卷调查)
  17. xfce-因为面板在 kiosk 模式下运行,所以不允许作为普通用户的您更改面板配置
  18. 图像放缩之双立方插值
  19. Linux 好书、经典书籍推荐
  20. 深度学习 yolov5等结构图

热门文章

  1. 线下活动 | 聚焦分布式高可用的消息队列
  2. 【Python】ConnectionResetError [WinError 10054] 远程主机强迫关闭了一个现有的连接
  3. vue+echarts实现多个仪表盘图表
  4. npm出现UNMET DEPENDENCY的一种情况
  5. js键盘监听事件及键盘键码对照表
  6. 使用Quantlib,通过YTM计算债券净值
  7. android 实现ble蓝牙自动配对连接
  8. SSD: Single Shot MultiBox Detector 模型fine-tune和网络架构
  9. 计算机的硬盘有几个分区,电脑硬盘分几个区合适,电脑硬盘怎么分区最合理?
  10. MATLAB读取文件中的所有同类型数据,并记录其峰值