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.将 ...
随机推荐
- <Android开源库 ~ 1> GitHub Android Libraries Top 100 简介
转载自GitHub Android Libraries Top 100 简介 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据 GitH ...
- Xposed截获 Android手机QQ密码
0x00 前言 Xposed框架是一款修改系统框架服务的软件,通过它许多功能强大的模块得以实现,且不冲突地同时运作,自从Xposed框架发布以来,安卓手机的可玩性日益激增,最近很闲很蛋疼,研究下截获A ...
- 带你了解强大的Cadence家族,你可能只用到了它1/10的工具
[转载自 SI-list[中国]http://mp.weixin.qq.com/s/qsdfzQwIVjvwHXuCdvrPXA ] 本篇对2017年初版Cadence的全套所有EDA工具的技术特性特 ...
- vue短信验证码组件
Vue.component('timerBtn',{ template: '<button v-on:click="run" :disabled="disabled ...
- ASP.NET Core - 初期准备
微软在前不久发布了.NET Core1.0(以下简称Core),由于项目需要开始对其进行研究,希望将自己踩过的坑和见解分享给大家. Core和Framework4.6是属于并行产品,前者侧重于跨平台的 ...
- PHP获取系统时间不对的解决办法(转载)
原地址:https://blog.csdn.net/u012124764/article/details/51450958 使用PHP获取系统时间,发现时间不对,是因为PHP默认的时区是UTC,应该将 ...
- python url库学习
参考资料:http://cuiqingcai.com/947.html urllib,urlib2是python自带的库. urlopen(url,data,timeout),三个参数. 第一个是地址 ...
- Spring 远程调用工具类RestTemplateUtils
Spring 远程调用Rest服务工具类,包含Get.Post.Put.Delete四种调用方式. 依赖jar <dependency> <groupId>org.spring ...
- OnCollisionEnter和OnTriggerEnter
之前对这两个的用法不是特别清楚,重新学习了下,再做个测试看看效果如何: 1.新建一个场景test 2.添加一个cube,点击Inspector面板会发现系统已经默认添加了Box collisder组件 ...
- mysql默认字符集问题
最近在使用mysql的时候出现了奇怪的乱码问题,最开始发现mysql的字符集的确存在一些问题. 经过修改配置文件/etc/my.cnf [mysqld] character-set-server=ut ...