Android 热点相关操作
Android未提供对该API的直接访问, 需要使用反射, 代码较简单, 如下
GetHotspotState.java
package club.seliote.hotspotscanner.utils;
import android.content.Context;
import android.net.wifi.WifiManager;
import java.lang.reflect.Method;
/**
* 用于获取热点状态
*/
public class GetHotspotState {
/**
* 获取热点状态
* @return HOTSPOT_STATE的枚举
* @throws Exception, 可能是GlobalApplicationContext或从反射中抛出
*/
public static HOTSPOT_STATE getState() throws Exception {
// 需要使用getApplicationContext(), 否则将报错
// Error: The WIFI_SERVICE must be looked up on the Application context or memory will leak on devices < Android N.
// Try changing to .getApplicationContext() [WifiManagerLeak]
WifiManager wifiManager = (WifiManager) GlobalApplicationContext.getContext()
.getApplicationContext()
.getSystemService(Context.WIFI_SERVICE);
// 不允许直接调用, 需要使用反射
Method method = wifiManager.getClass().getMethod("getWifiApState");
int stateCode = (Integer) method.invoke(wifiManager);
// 部分API版本可能会有问题, 在这里处理一下
if (stateCode > 10) {
stateCode -= 10;
}
return HOTSPOT_STATE.class.getEnumConstants()[stateCode];
}
/**
* 获取热点开启状态
* @return 已开启返回true, 否则返回false
* @throws Exception, 任何步骤出错将会抛出Exception
*/
public static boolean isHotsoptOpen() throws Exception {
return GetHotspotState.getState() == HOTSPOT_STATE.WIFI_AP_STATE_ENABLED;
}
}
HOTSPOT_STATE.java
package club.seliote.hotspotscanner.utils;
/**
* 热点状态的枚举
*/
public enum HOTSPOT_STATE {
// 正在关闭
WIFI_AP_STATE_DISABLING,
// 已关闭
WIFI_AP_STATE_DISABLED,
// 正在开启
WIFI_AP_STATE_ENABLING,
// 已开启
WIFI_AP_STATE_ENABLED,
//错误状态
WIFI_AP_STATE_FAILED
}
接下来是获取相关的连接状态, 热点连接状态保存在文件/proc/net/arp中, 如果WiFi是开启的, 该文件保存的将是WiFi下的ARP信息, 所以获取热点连接状态前务必检查热点开启状态, 代码中获取一个 shell 直接 cat 即可, 就不上图了, 其中HW type是硬件类型(hardware type of the address from RFC 826), Flags指内部ARP结构, 当该设备连接时值为0x2, 断开时值为0x0, 由此便可进行热点连接设备的监控
Android 热点相关操作的更多相关文章
- Android 快捷方式相关操作
尽管现在少数手机不支持快捷方式,但是仍然有大部分手机是支持的.创建快捷方式,可以减少用户在应用列表繁多的应用程序中查找应用的时间,快速进入应用:或是应用中的某个功能使用频率较高,创建快捷方式,可以快速 ...
- Android开发相关操作
命令行启动DDMS工具,前提是有这个工具 ~/rustsoftware/adt-bundle-linux-x86_64-20140702/sdk/tools$ ./ddms 查看机器内存情况: adb ...
- Android 图片文件操作、屏幕相关、.9图片的理解
一:Android图片操作 1.存储bitmap到本地文件系统 public static void bitmapToFile(Bitmap bitmap, String uri) { if(!ex ...
- 家庭记账本app进度之android中AlertDialog的相关应用以及对日期时间的相关操作(应用alertdialog使用的谈话框)
对于AlertDialog的相关知识: 1.创建构造器AlertDialog.Builder的对象: 2.通过构造器对象调用setTitle.setMessage.setIcon等方法构造对话框 ...
- Android UI相关开源项目库汇总
最近做了一个Android UI相关开源项目库汇总,里面集合了OpenDigg 上的优质的Android开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个st ...
- [转]Android - 文件读写操作 总结
转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...
- android 返回键 操作
cocos2dx项目移植到android平台上对于 android手机返回键,主菜单键等键的相关操作,本篇详细对返回键做个简单的介绍说明, 不足不对之处,请同猿们指出. 首先在主activity下,即 ...
- android管理联系人操作
ContentProvider扩展之管理系统联系人 我们都知道ContentProvider是用来共享数据的,然而android本身就提供了大量的ContentProvider,例如联系人信息,系统的 ...
- DateTimeHelper【日期类型与字符串互转以及日期对比相关操作】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 实现日期和字符串之间的转换以及日期的相关操作: 1.日期格式的字符串输出为Date类型: 2.将Date类型以指定格式输出: 3.将 ...
随机推荐
- 【Angular JS】正确调用JQuery与Angular JS脚本 - 修复Warning: Tired to load angular more than once
自己正在做一个小网站,使用Angular JS + Express JS + Mongo DB,在开发过程中,遇到一些问题,所以整理出来.希望对大家都有帮助. 这是今天解决的一个问题,Angular ...
- 07、Spark集群的进程管理
07.Spark集群的进程管理 7.1 概述 Spark standalone集群模式涉及master和worker两个守护进程.master进程是管理节点,worker进程是工作节点.spark提供 ...
- ajax异步请求的使用情景
先上代码 var sysAllowedExts; $.ajax({ url: url+"/getExtSetting", //请求的url地址 dataType: "js ...
- Vue.js-项目目录结构解析
1.Vue初始化项目目录如下: 2.目录各项含义如下:
- ES6相关特性(解构赋值)
解构赋值:本质上是一种匹配模式,等号两边的模式相同,则左边的变量可以被赋予对应的值. 注意:null & undefined 不能解构赋值!!! 数组的解构赋值: let [a,[[b],c] ...
- 网页打开速度优化——HTTP请求头及响应头
no-cache:不缓存过期的资源 no-store:不缓存 最近看了<图解HTTP>这本书,书上讲到了这两者的区别: no-cache从字面意义上很容易误解为不缓存,但是no-cache ...
- MySQL latch小结
lock和latch的比较 对于INNODB存储引擎中的latch可以通过命令 SHOW ENGINE INNODB MUTEX 看到latch的更多信息 说明: 列Type显示的总是 InnoD ...
- 在idea中配置jetty
第一步:在pom.xml中配置jetty插件 <plugins> <!-- jetty插件 --> <plugin> <groupId>org.mort ...
- 5.vue解决动态img :src绑定
前言: 因为静态资源在vue中是需要经过编译的, 所以动态拼接的图片地址,在:src的时候不经过编译. 就会发生图片404,找不到资源. 那么本地图片资源如何动态的绑定呢? 实践: 其实,真相往往就是 ...
- runtime - 消息机制
Xcode中使用runtime代码时,建议先做下配置: 使用runtime代码时会有适当的提醒. OC方法调用的本质是消息转发,消息机制的本质 创建一个Person类,添加方法 - (void)eat ...