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

WifiAdmin.java

  1. package com.afu;
  2.  
  3. import java.util.List;
  4. import android.content.Context;
  5. import android.net.wifi.ScanResult;
  6. import android.net.wifi.WifiConfiguration;
  7. import android.net.wifi.WifiInfo;
  8. import android.net.wifi.WifiManager;
  9. import android.net.wifi.WifiManager.WifiLock;
  10. import android.util.Log;
  11.  
  12. public class WifiAdmin {
  13. private final static String TAG = "WifiAdmin";
  14. private StringBuffer mStringBuffer = new StringBuffer();
  15. private List<ScanResult> listResult;
  16. private ScanResult mScanResult;
  17. // 定义WifiManager对象
  18. private WifiManager mWifiManager;
  19. // 定义WifiInfo对象
  20. private WifiInfo mWifiInfo;
  21. // 网络连接列表
  22. private List<WifiConfiguration> mWifiConfiguration;
  23. // 定义一个WifiLock
  24. WifiLock mWifiLock;
  25.  
  26. /**
  27. * 构造方法
  28. */
  29. public WifiAdmin(Context context) {
  30. mWifiManager = (WifiManager) context
  31. .getSystemService(Context.WIFI_SERVICE);
  32. mWifiInfo = mWifiManager.getConnectionInfo();
  33. }
  34.  
  35. /**
  36. * 打开Wifi网卡
  37. */
  38. public void openNetCard() {
  39. if (!mWifiManager.isWifiEnabled()) {
  40. mWifiManager.setWifiEnabled(true);
  41. }
  42. }
  43.  
  44. /**
  45. * 关闭Wifi网卡
  46. */
  47. public void closeNetCard() {
  48. if (mWifiManager.isWifiEnabled()) {
  49. mWifiManager.setWifiEnabled(false);
  50. }
  51. }
  52.  
  53. /**
  54. * 检查当前Wifi网卡状态
  55. */
  56. public void checkNetCardState() {
  57. if (mWifiManager.getWifiState() == 0) {
  58. Log.i(TAG, "网卡正在关闭");
  59. } else if (mWifiManager.getWifiState() == 1) {
  60. Log.i(TAG, "网卡已经关闭");
  61. } else if (mWifiManager.getWifiState() == 2) {
  62. Log.i(TAG, "网卡正在打开");
  63. } else if (mWifiManager.getWifiState() == 3) {
  64. Log.i(TAG, "网卡已经打开");
  65. } else {
  66. Log.i(TAG, "没有获取到状态-_-");
  67. }
  68. }
  69.  
  70. /**
  71. * 扫描周边网络
  72. */
  73. public void scan() {
  74. mWifiManager.startScan();
  75. listResult = mWifiManager.getScanResults();
  76. if (listResult != null) {
  77. Log.i(TAG, "当前区域存在无线网络,请查看扫描结果");
  78. } else {
  79. Log.i(TAG, "当前区域没有无线网络");
  80. }
  81. }
  82.  
  83. /**
  84. * 得到扫描结果 获取无线信号列表
  85. */
  86. public String getScanResult() {
  87. // 每次点击扫描之前清空上一次的扫描结果
  88. if (mStringBuffer != null) {
  89. mStringBuffer = new StringBuffer();
  90. }
  91. // 开始扫描网络
  92. scan();
  93. listResult = mWifiManager.getScanResults();
  94. if (listResult != null) {
  95. for (int i = 0; i < listResult.size(); i++) {
  96. mScanResult = listResult.get(i);
  97. mStringBuffer = mStringBuffer.append("NO.").append(i + 1)
  98. .append(" :").append(mScanResult.SSID).append("->")
  99. .append(mScanResult.BSSID).append("->")
  100. .append(mScanResult.capabilities).append("->")
  101. .append(mScanResult.frequency).append("->")
  102. .append(mScanResult.level).append("->")
  103. .append(mScanResult.describeContents()).append("\n\n");
  104. }
  105. }
  106. Log.i(TAG, mStringBuffer.toString());
  107. return mStringBuffer.toString();
  108. }
  109.  
  110. /**
  111. * 连接指定网络
  112. */
  113. public void connect() {
  114.  
  115. mWifiInfo = mWifiManager.getConnectionInfo();
  116. if (mWifiInfo != null) {
  117. Log.d("wifiInfo", mWifiInfo.toString());
  118. Log.d("SSID",mWifiInfo.getSSID());
  119. }
  120. }
  121.  
  122. /**
  123. * 断开当前连接的网络
  124. */
  125. public void disconnectWifi() {
  126. int netId = getNetworkId();
  127. mWifiManager.disableNetwork(netId);
  128. mWifiManager.disconnect();
  129. mWifiInfo = null;
  130. }
  131.  
  132. /**
  133. * 检查当前网络状态
  134. *
  135. * @return String
  136. */
  137. public void checkNetWorkState() {
  138. if (mWifiInfo != null) {
  139. Log.i(TAG, "网络正常工作");
  140. } else {
  141. Log.i(TAG, "网络已断开");
  142. }
  143. }
  144.  
  145. /**
  146. * 得到连接的ID
  147. */
  148. public int getNetworkId() {
  149. return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
  150. }
  151.  
  152. /**
  153. * 得到IP地址
  154. */
  155. public int getIPAddress() {
  156. return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
  157. }
  158.  
  159. // 锁定WifiLock
  160. public void acquireWifiLock() {
  161. mWifiLock.acquire();
  162. }
  163.  
  164. // 解锁WifiLock
  165. public void releaseWifiLock() {
  166. // 判断时候锁定
  167. if (mWifiLock.isHeld()) {
  168. mWifiLock.acquire();
  169. }
  170. }
  171.  
  172. // 创建一个WifiLock
  173. public void creatWifiLock() {
  174. mWifiLock = mWifiManager.createWifiLock("Test");
  175. }
  176.  
  177. // 得到配置好的网络
  178. public List<WifiConfiguration> getConfiguration() {
  179. return mWifiConfiguration;
  180. }
  181.  
  182. // 指定配置好的网络进行连接
  183. public void connectConfiguration(int index) {
  184. // 索引大于配置好的网络索引返回
  185. if (index >= mWifiConfiguration.size()) {
  186. return;
  187. }
  188. // 连接配置好的指定ID的网络
  189. mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,
  190. true);
  191. }
  192.  
  193. // 得到MAC地址
  194. public String getMacAddress() {
  195. return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
  196. }
  197.  
  198. // 得到接入点的BSSID
  199. public String getBSSID() {
  200. return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
  201. }
  202.  
  203. // 得到WifiInfo的所有信息包
  204. public String getWifiInfo() {
  205. return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();
  206. }
  207.  
  208. // 添加一个网络并连接
  209. public int addNetwork(WifiConfiguration wcg) {
  210. int wcgID = mWifiManager.addNetwork(mWifiConfiguration.get(3));
  211. mWifiManager.enableNetwork(wcgID, true);
  212. return wcgID;
  213. }
  214. }

调用方法:

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

android下获取无线wif信号、ssid、MAC等操作类的更多相关文章

  1. Android下获取FPS的几种方法

    FPS(Frames Per Second)是关乎Android用户体验最为重要的指标之一,而在VR中更是如此.为了评估VR系统.VR SDK及Unity应用的性能,通常会实时获取FPS并将其显示出来 ...

  2. cocos2d-x在win32和iOS、android下获取当前系统时间的方法

    最近在游戏里要显示当前系统时间的功能,网上一搜很多写着获取的方法,大都是如下 struct cc_timeval now; CCTime::gettimeofdayCocos2d(&now, ...

  3. Android中获取正在运行的应用程序-----ActivityManager.RunningAppProcessInfo类详解

    今天继续讲解关于ActivityManager的使用,通过前面一节的学习,我们学会了如何利用ActivityManager获取系统里 正在运行的进程.本文要讲解的知识点是利用这些进程信息获取系统里正在 ...

  4. Xamarin.Android下获取与解析JSON

    一.新建项目 1.新建一个Android项目,并命名为为NetJsonList 2.右击引用,选择添加引用,引用System.Json.dll 二.同步请求 既然是跨平台,我们自然不能按照java下的 ...

  5. Delphi获取Android下GPS的NMEA 0183数据

    下面的程序,可以实现Android下获取GNSS的NMEA0183数据: unit utAndroidNmea; interface uses Androidapi.JNIBridge, Androi ...

  6. java获取服务器IP地址及MAC地址的方法

    这篇文章主要介绍了java编程实现获取机器IP地址及MAC地址的方法,实例分析了Java分别针对单网卡及多网卡的情况下获取服务器IP地址与MAC地址的相关技巧,需要的朋友可以参考下   本文实例讲述了 ...

  7. URL转Drawable之 Android中获取网络图片的三种方法

    转载自: http://doinone.iteye.com/blog/1074283 Android中获取网络图片是一件耗时的操作,如果直接获取有可能会出现应用程序无响应(ANR:Applicatio ...

  8. (转载)Mac下使用Android Studio 获取 SHA1和MD5

    Mac下使用Android Studio 获取 SHA1和MD5 2015-08-10 15:38 1776人阅读 评论(1) 收藏 举报  分类: Android(14)  版权声明:本文为博主原创 ...

  9. android程序获取WIFI的IP地址和MAC地址

    转自:http://my.oschina.net/chenj/blog/68680 近日在鼓捣这玩意,拿出来大家分享一下,代码比较简单,如果有不懂的再问 <Button android:id=& ...

随机推荐

  1. js错误 SyntaxError: missing : after property id

    在用jquery的post方法时 $.post('adminCheckTpmisPlans.do',{'test',str},function(f){ ... }) 报如下错误 SyntaxError ...

  2. 《转》Frameset布局

    前二天在写一个HTML界面,用到了Frameset,主要学习都是在下面的文章里,内容写得很详细,值得推荐大家看下. 网址:http://captaincook.iteye.com/blog/36563 ...

  3. SLB 权重问题

    <pre name="code" class="html">一般配置SLB的时候有个权重0到100,是如何选择数值的? 权重需要您根据后端机器的配置 ...

  4. HDU/HDOJ 2612 Find a way 双向BFS

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2612 思路:从两个起点出发,有多个终点,求从两个起点同时能到达的终点具有的最小时间,开两个数组分别保存 ...

  5. hdu 1224 Free DIY Tour(最长的公路/dp)

    http://acm.hdu.edu.cn/showproblem.php? pid=1224 基础的求最长路以及记录路径. 感觉dijstra不及spfa好用,wa了两次. #include < ...

  6. R语言与数据分析之九:时间内序列--HoltWinters指数平滑法

    今天继续就指数平滑法中最复杂的一种时间序列:有增长或者减少趋势而且存在季节性波动的时间序列的预測算法即Holt-Winters和大家分享.这样的序列能够被分解为水平趋势部分.季节波动部分,因此这两个因 ...

  7. POJ--3268--Silver Cow Party【SPFA+邻接表】

    题意:一些牛要去某一点參加聚会,然后再回到自己家,路是单向的,问花费时间最多的那头牛最少须要花费多长时间. 思路:从聚会地点返回,相当于是从某一点到其它各个点的最短路径.从牛的家中走到聚会地点,能够把 ...

  8. 【VB/.NET】Converting VB6 to VB.NET 【Part II】【之四】

    第四部分 原文 DLLs, DAO, RDO, ADO, and AD.NET; the History of VB DBs In the early versions of VB, there we ...

  9. Android支付接入(七):Google In-app-Billing

    前段时间有事请耽搁了,今天跟大家一起看下Google的in-app Billing V3支付.    如果没有Google Play此处附上安装Google Play的一键安装器的链接(需要Root权 ...

  10. POJ 2365 Rope(水题)

    [题意简述]:给出我们钉子个数与半径,让我们求出缠绕在钉子上的绳子有多长. [分析]:从题目中我们能够看出,绳子长度的和等于每两个钉子的距离的和加上接触在钉子上的绳子的长度,不难发现这部分长度事实上就 ...