Android开发周围wifi热点和属性的获取
来源:互联网 发布:自学编程入门基础知识 编辑:程序博客网 时间:2024/04/30 04:15
Android开发中WiFi热点和WiFi属性的获取会经常被用到,下面就来记录下WiFi的名称、状态等属性以及获取周围WiFi热点的方法。
一、获取wifi属性
要获得Android系统相关的属性,通常需要获得相关的系统服务。在Android中最常用的是通过Manager来获得对对象的操作服务。WiFi相关的操作中需要用到两个Manager:WifiManager和ConnectivityManage:
- public WifiManager wifiManager; //管理wifi
- public ConnectivityManager connectManager; //管理网络连接
- wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); //获得系统wifi服务
- connectManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
获得服务后,即可得到对象进而获得相关属性:
- public NetworkInfo netInfo; //网络连接
- public WifiInfo wifiInfo; //wifi
- public DhcpInfo dhcpInfo;<span style="white-space:pre"> //动态主机配置协议信息的对象,获得IP等网关信息
- <pre name="code" class="java">netInfo = connectManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
- dhcpInfo = wifiManager.getDhcpInfo();
- wifiInfo = wifiManager.getConnectionInfo();
要获得wifi相关的网络信息,必须设定网络类型参数:ConnectivityManager.TYPE_WIFI.下面就可以获得需要的信息,例如当前连接wifi的名称等等属性,即SSID:
- wifiInfo.getSSID();
- String wifiProperty = "当前连接Wifi信息如下:"+wifiInfo.getSSID()+'\n'+
- "ip:" + FormatString(dhcpInfo.ipAddress) +'\n'+
- "mask:" + FormatString(dhcpInfo.netmask) +'\n'+
- "netgate:"+ FormatString(dhcpInfo.gateway) +'\n'+
- "dns:" + FormatString(dhcpInfo.dns1) ;
- public String FormatString(int value){
- String strValue="";
- byte[] ary = intToByteArray(value);
- for(int i=ary.length-1;i>=0;i--){
- strValue += (ary[i] & 0xFF);
- if(i>0){
- strValue+=".";
- }
- }
- return strValue;
- }
- public byte[] intToByteArray(int value){
- byte[] b = new byte[4];
- for (int i = 0; i < 4; i++){
- int offset = (b.length - 1 - i) * 8;
- b[i] = (byte) ((value >>> offset) & 0xFF);
- }
- return b;
- }
二、获取周围WiFi热点
wifiManager提供了一个方法getScanResults()来获得周围的wifi信息,其返回的是一组ScanResult对象,存放在list当中,每个ScanResult对象封装了一个wifi热点相关信息,通过ScanResult对象的属性即可获取到,最常用的两个属性为wifi名称(SSID)和信号强度(level):
- ArrayList<ScanResult> list; //存放周围wifi热点对象的列表
- list = (ArrayList<ScanResult>) wifiManager.getScanResults();
- //将搜索到的wifi根据信号强度从强到弱进行排序
- private void sortByLevel(ArrayList<ScanResult> list) {
- for(int i=0;i<list.size();i++)
- for(int j=1;j<list.size();j++)
- {
- if(list.get(i).level<list.get(j).level) //level属性即为强度
- {
- ScanResult temp = null;
- temp = list.get(i);
- list.set(i, list.get(j));
- list.set(j, temp);
- }
- }
- }
如果要对wifi状态,网络连接状态进行判断等操作,不要忘了很重要的一点,就是在AndroidManifest.xml里添加权限:
- <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission>
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
8 0
- Android开发周围wifi热点和属性的获取
- Android开发周围wifi热点和属性的获取
- android获取周围WIFI热点
- Android连续获取当前所连接WiFi及周围热点列表信息的解决方案
- Android盒子开发,获取网络的信息(热点,WIFI,有线)
- WiFi和热点开发
- Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息、热点信息)
- android AP热点(wifi热点)开发
- android 热点开发、WiFi热点通信
- android通过反射获取wifi热点ap的ssid和password
- Android WiFi开发 (二)Wifi热点
- Android WiFi/WiFi热点开发总结
- Android WiFi/WiFi热点开发总结
- Android WiFi/WiFi热点开发总结
- android 如何获取连接wifi热点的设备数量
- 关于检测手机信号强度,wifi信号强度以及检测周围wifi热点的一个小例子
- 关于检测手机信号强度,wifi信号强度以及检测周围wifi热点的一个小例子
- android里获取周围所有wifi ap 的信号强度的方法
- linux下通过yum安装svn及配置(实践操作)
- Matlab立体视差提取
- android 利用SimpleDateFormat格式化时间不准确的问题
- 数据结构——动态链表
- HDOJ 1257 LIS
- Android开发周围wifi热点和属性的获取
- oracle中取当前时间函数的区别
- HTML5简单的拖拽实现
- struct和union的区别
- 寻找自适应元素(10)-透视表的自动拆分数据
- 日常开发遇到问题笔记
- 小团队协作,磨合日志
- Java链接MySQL
- Porting your code to NLTK 3.0