Android 监听 WiFi 开关状态
Android 监听 WiFi 开关状态
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70854309
本文出自【赵彦军的博客】
- WifiSwitch_Presenter 源码:
package com.yiba.wifi.sdk.lib.presenter;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.WifiManager;
/**
* Created by ${zhaoyanjun} on 2017/3/29.
* Wifi 开关监听
*/
public class WifiSwitch_Presenter {
private Context mContext ;
private Receiver receiver ;
private WifiSwitch_Interface mInterface ;
public WifiSwitch_Presenter( Context context , WifiSwitch_Interface mInterface ){
this.mContext = context ;
this.mInterface = mInterface ;
observeWifiSwitch();
}
private void observeWifiSwitch(){
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
receiver = new Receiver() ;
mContext.registerReceiver(receiver, filter);
}
/**
* 释放资源
*/
public void onDestroy(){
if ( receiver != null ){
mContext.unregisterReceiver( receiver );
}
if (mContext!=null){
mContext = null;
}
}
class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
switch (wifiState) {
case WifiManager.WIFI_STATE_DISABLED:
if (mInterface != null){
mInterface.wifiSwitchState(WifiSwitch_Interface.WIFI_STATE_DISABLED);
}
break;
case WifiManager.WIFI_STATE_DISABLING:
if (mInterface != null){
mInterface.wifiSwitchState(WifiSwitch_Interface.WIFI_STATE_DISABLING);
}
break;
case WifiManager.WIFI_STATE_ENABLED:
if (mInterface != null){
mInterface.wifiSwitchState(WifiSwitch_Interface.WIFI_STATE_ENABLED);
}
break;
case WifiManager.WIFI_STATE_ENABLING:
if ( mInterface != null ) {
mInterface.wifiSwitchState(WifiSwitch_Interface.WIFI_STATE_ENABLING);
}
break;
case WifiManager.WIFI_STATE_UNKNOWN:
if ( mInterface != null ){
mInterface.wifiSwitchState( WifiSwitch_Interface.WIFI_STATE_UNKNOWN );
}
break;
}
}
}
}
- WifiSwitch_Interface 源码
package com.yiba.wifi.sdk.lib.presenter;
/**
* Created by ${zhaoyanjun} on 2017/3/29.
* Wifi 开关监听
*/
public interface WifiSwitch_Interface {
int WIFI_STATE_ENABLING = 0 ;
int WIFI_STATE_ENABLED = 1 ;
int WIFI_STATE_DISABLING = 2 ;
int WIFI_STATE_DISABLED = 3 ;
int WIFI_STATE_UNKNOWN = 4 ;
void wifiSwitchState( int state );
}
- 使用方式 MainActivity :
package com.yiba.core;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements WifiSwitch_Interface {
private WifiSwitch_Presenter wifiSwitch_presenter ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wifiSwitch_presenter = new WifiSwitch_Presenter( this , this ) ;
}
@Override
public void wifiSwitchState(int state) {
switch ( state ){
case WifiSwitch_Interface.WIFI_STATE_DISABLED :
Toast.makeText(this, "WiFi 已经关闭", Toast.LENGTH_SHORT).show();
break;
case WifiSwitch_Interface.WIFI_STATE_DISABLING:
Toast.makeText(this, "WiFi 正在关闭", Toast.LENGTH_SHORT).show();
break;
case WifiSwitch_Interface.WIFI_STATE_ENABLED :
Toast.makeText(this, "WiFi 已经打开", Toast.LENGTH_SHORT).show();
break;
case WifiSwitch_Interface.WIFI_STATE_ENABLING :
Toast.makeText(this, "WiFi 正在打开", Toast.LENGTH_SHORT).show();
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//释放资源
if ( wifiSwitch_presenter != null ){
wifiSwitch_presenter.onDestroy();
}
}
}
Android 监听 WiFi 开关状态的更多相关文章
- Android 监听wifi广播的两种方式
1.XML中声明 <receiver android:name=".NetworkConnectChangedReceiver" > <i ...
- Android监听WIFI网络的变化并且获得当前信号强度
MainActivity如下: package cc.testwifi; import android.os.Bundle; import android.app.Activity; /** * De ...
- Android 监听电量的状态
监控手机电量的变化和充电状态 在BatteryManager中有一个粘性广播,不需要BroadcastReceiver作为接收器,在注册时将传入null IntentFilter filter = n ...
- [Android Pro] 监听WIFI 打开广播
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-perm ...
- 广播小案例-监听系统网络状态 --Android开发
本例通过广播实现简单的监听系统网络状态改变的小案例. 1.案例效果演示 当手机连网后,系统提示“已连接网络”, 当手机断网后,系统提示“当前网络不可用”. 2.案例实现 在主活动中动态注册广播,然后写 ...
- Android监听手机网络变化
Android监听手机网络变化 手机网络状态发生变化会发送广播,利用广播接收者,监听手机网络变化 效果图 注册广播接收者 <?xml version="1.0" encodi ...
- android86 监听SD卡状态,勒索软件,监听应用的安装、卸载、更新,无序广播有序广播
* 添加权限 <uses-permission android:name="android.permission.RECEIVE_SMS"/> * 4.0以后广播接收者 ...
- 【Android】Android 监听apk安装替换卸载广播
[Android]Android 监听apk安装替换卸载广播 首先是要获取应用的安装状态,通过广播的形式 以下是和应用程序相关的Broadcast Action ACTION_PACKAGE_ADDE ...
- Windows Phone 8 获取与监听网络连接状态(转)
原文地址:http://www.cnblogs.com/sonic1abc/archive/2013/04/02/2995196.html 现在的只能手机对网络的依赖程度都很高,尤其是新闻.微博.音乐 ...
随机推荐
- Java操作word文档使用JACOB和POI操作word,Excel,PPT需要的jar包
可参考文档: http://wibiline.iteye.com/blog/1725492 下载jar包 http://download.csdn.net/download/javashixiaofe ...
- Facade外观模式(结构性模式)
1.系统的复杂度 需求:开发一个坦克模拟系统用于模拟坦克车在各种作战环境中的行为,其中坦克系统由引擎.控制器.车轮等各子系统构成.然后由对应的子系统调用. 常规的设计如下: #region 坦克系统组 ...
- 这个拖后腿的“in”
问题之源 C# 7.2推出了全新的参数修饰符in,据说是能提升一定的性能,官方MSDN文档描述是: Add the in modifier to pass an argument by referen ...
- JVM(四)JVM的双亲委派模型
1.两种不同的类加载器 从JAVA虚拟机的角度来讲,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++语言实现,是虚拟机自身的一部分:另 ...
- 单线程实现同时监听多个端口(windows平台c++代码)
前言 多年前开发了一套网络库,底层实现采用IOCP(完成端口).该库已在公司多个程序中应用:经过多次修改,长时间检验,已经非常稳定高效. 最近把以前的代码梳理了一下,又加进了一些新的思路.代码结构更加 ...
- 如何让你的网站用上免费的HTTPS
因为之前网站上被注入了广告,再百般尝试之后最后还是使用了HTTPS解决了. 在实现HTTPS的时候最关键的就是证书. 证书的质量觉得了你被多少浏览器所信任. 证书的价格也就蹭蹭蹭往上涨了. 这里推荐一 ...
- CNN初探
CNN初探 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7450413.html 前言 这篇博客主要讲解卷积神经网络(CNN) ...
- pipelinedb--流、滑动窗口测试
https://blog.csdn.net/liuxiangke0210/article/details/74010951 https://yq.aliyun.com/articles/166 一.p ...
- MySQL Replication之主从切换
在生产环境中,我们的架构很多都是一主多从.比如一个主数据库服务器M,两个从数据库服务器S1,S2同时指向主数据库服务器M.当主服务器M因为意外情况宕机,需要将其中的一个从数据库服务器(假设选择S1)切 ...
- IDEA SQL dialect detection和Duplicated Code检测关闭
IDEA似乎做的太多,对于Mybatis文件中的SQL语法检查可能就没有太大的必要性,Duplicated Code检测其实非常好,但是我测试使用JDBC代码的时候一堆波浪线让我很不舒服 因此将这两个 ...