一个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. Cocos2d-x响应android返回键

    开启按键按键监听 setKeypadEnabled(true); 重写监听事件函数 virtual void keyBackClicked(); 如: void BanQiuLayer::keyBac ...

  2. 简单的Ajax应用实例

    从网页前端输入提示范围内的字符,然后显示从后台返回的结果 <html> <head> <meta http-equiv="content-type" ...

  3. rzsz不能大于4G,securefx传5.2G没有问题,

    rzsz不能大于4G,securefx传5.2G没有问题, 查看系统限制: $ulimit -acore file size          (blocks, -c) 0data seg size  ...

  4. Android中使用SurfaceView和Canvas来绘制动画

    事实上每一个View中都有Canvas能够用来绘制动画.仅仅须要在这个View中重载onDraw()方法就能够,可是SurfaceView类是一个专门用来制动动画的类. Canvas(中文叫做&quo ...

  5. iOS文件保存策略

    Where You Should Put Your App’s Files To prevent the syncing and backup processes on iOS devices fro ...

  6. 【UVA】10012 - How Big Is It?(暴力)

    使用DFS枚举所有的安排.每次加入后,当一个圆.他的立场是最大的,并已加入了圆环中的所有切线位置前面. 14383635 10012 option=com_onlinejudge&Itemid ...

  7. ExtJs选择器

    想要利用ExtJS的库函数对DOM进行各类操作,就要得到Element类型的对象,但是Ext.get()取到的虽然是Element,但是参数只能是id,如果大家对jQuery的selector方式很喜 ...

  8. Linux内核升级

    一.测试环境 CentOS6.5 X86 64位 内核版本为 2.6.32 VM 10.07 二.编译内核版本 2.1.kernel 3.2.71 2.2.kernel 3.4.108 2.3.ker ...

  9. 基于Hadoop的地震数据分析统计

    源码下载地址:http://download.csdn.net/detail/huhui_bj/5645641 opencsv下载地址:http://download.csdn.net/detail/ ...

  10. hdu1495(bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 题意:有三个杯子,开始时第一个杯子装满水(体积为a),倒来倒去,得到其中2个杯里的水的体积都为a ...