android下获取无线wif信号、ssid、MAC等操作类

一个android下获取无线wif信号、ssid、MAC等操作的类。


WifiAdmin.java

package com.afu;
import java.util.List;
import android.content.Context;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.WifiLock;
import android.util.Log;
public class WifiAdmin {
private final static String TAG = "WifiAdmin";
private StringBuffer mStringBuffer = new StringBuffer();
private List<ScanResult> listResult;
private ScanResult mScanResult;
// 定义WifiManager对象
private WifiManager mWifiManager;
// 定义WifiInfo对象
private WifiInfo mWifiInfo;
// 网络连接列表
private List<WifiConfiguration> mWifiConfiguration;
// 定义一个WifiLock
WifiLock mWifiLock;
/**
* 构造方法
*/
public WifiAdmin(Context context) {
mWifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
mWifiInfo = mWifiManager.getConnectionInfo();
}
/**
* 打开Wifi网卡
*/
public void openNetCard() {
if (!mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(true);
}
}
/**
* 关闭Wifi网卡
*/
public void closeNetCard() {
if (mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(false);
}
}
/**
* 检查当前Wifi网卡状态
*/
public void checkNetCardState() {
if (mWifiManager.getWifiState() == 0) {
Log.i(TAG, "网卡正在关闭");
} else if (mWifiManager.getWifiState() == 1) {
Log.i(TAG, "网卡已经关闭");
} else if (mWifiManager.getWifiState() == 2) {
Log.i(TAG, "网卡正在打开");
} else if (mWifiManager.getWifiState() == 3) {
Log.i(TAG, "网卡已经打开");
} else {
Log.i(TAG, "没有获取到状态-_-");
}
}
/**
* 扫描周边网络
*/
public void scan() {
mWifiManager.startScan();
listResult = mWifiManager.getScanResults();
if (listResult != null) {
Log.i(TAG, "当前区域存在无线网络,请查看扫描结果");
} else {
Log.i(TAG, "当前区域没有无线网络");
}
}
/**
* 得到扫描结果 获取无线信号列表
*/
public String getScanResult() {
// 每次点击扫描之前清空上一次的扫描结果
if (mStringBuffer != null) {
mStringBuffer = new StringBuffer();
}
// 开始扫描网络
scan();
listResult = mWifiManager.getScanResults();
if (listResult != null) {
for (int i = 0; i < listResult.size(); i++) {
mScanResult = listResult.get(i);
mStringBuffer = mStringBuffer.append("NO.").append(i + 1)
.append(" :").append(mScanResult.SSID).append("->")
.append(mScanResult.BSSID).append("->")
.append(mScanResult.capabilities).append("->")
.append(mScanResult.frequency).append("->")
.append(mScanResult.level).append("->")
.append(mScanResult.describeContents()).append("\n\n");
}
}
Log.i(TAG, mStringBuffer.toString());
return mStringBuffer.toString();
}
/**
* 连接指定网络
*/
public void connect() {
mWifiInfo = mWifiManager.getConnectionInfo();
if (mWifiInfo != null) {
Log.d("wifiInfo", mWifiInfo.toString());  
Log.d("SSID",mWifiInfo.getSSID());  
}
}
/**
* 断开当前连接的网络
*/
public void disconnectWifi() {
int netId = getNetworkId();
mWifiManager.disableNetwork(netId);
mWifiManager.disconnect();
mWifiInfo = null;
}
/**
* 检查当前网络状态
*
* @return String
*/
public void checkNetWorkState() {
if (mWifiInfo != null) {
Log.i(TAG, "网络正常工作");
} else {
Log.i(TAG, "网络已断开");
}
}
/**
* 得到连接的ID
*/
public int getNetworkId() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
}
/**
* 得到IP地址
*/
public int getIPAddress() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
}
// 锁定WifiLock
public void acquireWifiLock() {
mWifiLock.acquire();
}
// 解锁WifiLock
public void releaseWifiLock() {
// 判断时候锁定
if (mWifiLock.isHeld()) {
mWifiLock.acquire();
}
}
// 创建一个WifiLock
public void creatWifiLock() {
mWifiLock = mWifiManager.createWifiLock("Test");
}
// 得到配置好的网络
public List<WifiConfiguration> getConfiguration() {
return mWifiConfiguration;
}
// 指定配置好的网络进行连接
public void connectConfiguration(int index) {
// 索引大于配置好的网络索引返回
if (index >= mWifiConfiguration.size()) {
return;
}
// 连接配置好的指定ID的网络
mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,
true);
}
// 得到MAC地址
public String getMacAddress() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
}
// 得到接入点的BSSID
public String getBSSID() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
}
// 得到WifiInfo的所有信息包
public String getWifiInfo() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();
}
// 添加一个网络并连接
public int addNetwork(WifiConfiguration wcg) {
int wcgID = mWifiManager.addNetwork(mWifiConfiguration.get(3));
mWifiManager.enableNetwork(wcgID, true);
return wcgID;
}
}


 

调用方法:

	WifiAdmin mWifiAdmin = new WifiAdmin(Main.this);
String mScanResult = mWifiAdmin.getScanResult();
scanResult.setText(mScanResult);


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[vue] 为何官方推荐使用axios而不用vue-resource?

[vue] 为何官方推荐使用axios而不用vue-resource&#xff1f; 1.vue-resources不再更新了&#xff0c;vue作者尤大推荐axios。 2.axios更加强大 3.axios就是一个基于ES6的Promise的网络请求库&#xff0c;其实说干净了就是一个打包好的XMLHttpRequests&#xff0c;也就是说&am…

Java基础学习-IO流

package IObasics; import java.io.FileWriter; import java.io.IOException;/*IO流* 通过数据流、序列化和文件系统提供系统输入和输出。 * 文件上传&#xff0c;复制文件&#xff0c;下载文件* 输出流&#xff1a;* java.io 类 FileWriter构造方法详细信息 &…

Visual.Assist.X.V10.7.1949的汉化破解补丁

Visual Assist X V10.7.1949的汉化破解补丁&#xff0c;方便各位朋友。 本博客会跟踪升级&#xff0c;请留意。 关于菜单的汉化请看&#xff1a;http://blog.csdn.net/afu45/article/details/9145293 汉化方法 先安装英文原版软件。下载地址&#xff1a;http://www.wholeto…

[vue] 使用vue开发过程你是怎么做接口管理的?

[vue] 使用vue开发过程你是怎么做接口管理的&#xff1f; 创建一个request.js用于封装axios&#xff0c;在 src/api/request&#xff0c;设置拦截器统一处理请求和相应。封装 axios&#xff1a;request.js&#xff1a;import axios from axios import {Message, Loading} from…

金士顿 8G u盘 红色 量产记录

找了好多教程&#xff0c;只有这个成功了&#xff0c;记录下来 逻辑盘符 : H:\ 此分区容量: 7.1G 设备ID : VID 0951 PID 1642 设备序列号: 001CC0EC348CBBB170000294 设备版本 : PMAP 设备制造商: Kingston 设备型号 : DT 101 G2 当…

微信小程序点击跳转出现背景

解决办法&#xff1a; 1、在navigater标签上加上 hover-class“none” 2、在标签css样式中加上backgroud&#xff1a;none&#xff1b; 转载于:https://www.cnblogs.com/weiyunblogs/p/10304045.html

[vue] 如何引入scss?引入后如何使用?

[vue] 如何引入scss&#xff1f;引入后如何使用&#xff1f; 安装scss依赖包&#xff1a; npm install sass-loader --save-dev npm install node-sass --save-dev 在build文件夹下修改 webpack.base.conf.js 文件&#xff1a; 在 module 下的 rules 里添加配置&#xff0c;如…

支付宝手机网站支付 错误代码 insufficient-isv-permissions 错误原因: ISV权限不足

在集成支付宝 手机网站支付 时&#xff0c;明明已经签约了&#xff0c;调用却报错 错误代码 insufficient-isv-permissions 错误原因: ISV权限不足解决办法&#xff1a; 登录开放平台 -> 研发管理-> 我的应用-> 找到对应的应用 点查看-> 功能信息 将里面的手机…

[vue] vue和angular有什么区别呢?

[vue] vue和angular有什么区别呢&#xff1f; Vue.js - 多样化的 JavaScript 框架 作为一个跨平台的&#xff0c;高度进步的框架&#xff0c;Vue 成为了许多需要创建单页应用程序的开发人员的首选。在用于开发 Web 应用程序的典型 MVC 体系结构中&#xff0c;Vue 充当了 View…

HTML 禁止数字因被自动识别为手机号,而被添加拨号链接样式

现象 明明写的一串数字没加链接样式&#xff0c;而iPhone会自动把你这个文字加链接样式、并且点击这个数字还会自动拨号。 解决 在html头加入以下代码&#xff1a; <meta name"format-detection" content"telephoneno" /> telephoneno就禁止了把数字…

[vue] vue生命周期的作用是什么?

[vue] vue生命周期的作用是什么&#xff1f; 准确地控制数据流和其对DOM的影响个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

[vue] vue生命周期总共有几个阶段?

[vue] vue生命周期总共有几个阶段&#xff1f; beforeCreate&#xff1a;在 new 一个 vue 实例后&#xff0c;只有一些默认的生命周期钩子和默认事件&#xff0c;其他的东西都还没创建。created&#xff1a;data 和 methods 都已经被初始化好了。&#xff08;如果要调用 method…

(十九)hashlib模块

hashlib模块用于加密相关的操作&#xff0c;3.x里代替了md5模块和sha模块&#xff0c;主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 &#xff0c;MD5 算法 注意&#xff1a;md5和sha256算法都是单向加密&#xff0c;即明文加密为密文后&#xff0c;密文无法再解密回明文 适合…

[vue] 第一次加载页面时会触发哪几个钩子?

[vue] 第一次加载页面时会触发哪几个钩子&#xff1f; beforeCreate, created, beforeMount, mounted个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

Python贪婪算法

贪婪算法 每步均选择局部的最优解&#xff0c;重复此过程&#xff0c;最终即得到全局的最优解简而言之就是每步都采用最优解优点&#xff1a; 简单易行缺点&#xff1a; 并非在所有情况下都奏效经典的问题&#xff1a; 背包问题集合覆盖问题贪婪算法下的近似算法解决集合覆盖问…

[vue] DOM渲染在哪个周期中就已经完成了?

[vue] DOM渲染在哪个周期中就已经完成了&#xff1f; mounted生命周期个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

[vue] 说说你对SPA单页面的理解,它的优缺点分别是什么?

[vue] 说说你对SPA单页面的理解&#xff0c;它的优缺点分别是什么&#xff1f; 介绍&#xff1a;SPA应用就是一个web应用&#xff0c;可理解为&#xff1a;是一种只需要将单个页面加载到服务器之中的web应用程序。当浏览器向服务器发出第一个请求时&#xff0c;服务器会返回一…

UVA - 208 Firetruck(并查集+dfs)

题目&#xff1a; 给出一个结点d和一个无向图中所有的边&#xff0c;按字典序输出这个无向图中所有从1到d的路径。 思路&#xff1a; 1.看到紫书上的提示&#xff0c;如果不预先判断结点1是否能直接到达结点d&#xff0c;上来就直接dfs搜索的话会超时&#xff0c;于是就想到了用…

[vue] SPA单页面的实现方式有哪些?

[vue] SPA单页面的实现方式有哪些&#xff1f; 1.监听地址栏中hash变化驱动界面变化2.用pushsate记录浏览器的历史&#xff0c;驱动界面发送变化3.直接在界面用普通事件驱动界面变化它们都是遵循同一种原则&#xff1a;div 的显示与隐藏个人简介 我是歌谣&#xff0c;欢迎和大…

2019 CCPC-Wannafly Winter Camp Div2 Day1

补题进度 7/11 J 夺宝奇兵 范围较小&#xff0c;直接枚举靠多少票赢即可&#xff0c;不够的票从小到大买 #include<bits/stdc.h> #define ll long long const int maxn 1005; using namespace std; struct node {ll id,val;int pos; }p[maxn],P[maxn]; bool vis[maxn]; …