位置: 编程技术 - 正文
推荐整理分享Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息、热点信息)(android.net.wifi),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:android wifi应当使用哪种加密方式,android/data/wifipwd,深入理解android wifi,android/data/wifipwd,android.net.wifi,android wifi direct,android.permission.access_wifi_state,深入理解android wifi,内容如对您有帮助,希望把文章链接给更多的朋友!
一、获取wifi属性
获得Android系统相关的属性,通过Manager来获得对对象的操作服务。WiFi相关的操作中需要用到两个Manager:WifiManager和ConnectivityManage:
[java] view plaincopypublic WifiManager wifiManager; //管理wifi public ConnectivityManager connectManager; //管理网络连接 [java] view plaincopywifiManager = (WifiManager) getSystemService(WIFI_SERVICE); //获得系统wifi服务 connectManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);获得服务后,即可得到对象进而获得相关属性:
[java] view plaincopypublic NetworkInfo netInfo; //网络连接 public WifiInfo wifiInfo; //wifi public DhcpInfo dhcpInfo; //动态主机配置协议信息的对象,获得IP等网关信息 网络信息的获取:[java] view plaincopynetInfo = connectManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); dhcpInfo = wifiManager.getDhcpInfo(); wifiInfo = wifiManager.getConnectionInfo(); 要获得wifi相关的网络信息,必须设定网络类型参数:ConnectivityManager.TYPE_WIFI.下面就可以获得需要的信息,例如当前连接wifi的名称等等属性,即SSID:[java] view plaincopywifiInfo.getSSID(); 还要获得当前连接wifi网络的 ip、mask、netgate、dns 等信息,则需要如下实现:[java] view plaincopyString wifiProperty = "当前连接Wifi信息如下:"wifiInfo.getSSID()'n' "ip:" FormatString(dhcpInfo.ipAddress) 'n' "mask:" FormatString(dhcpInfo.netmask) 'n' "netgate:" FormatString(dhcpInfo.gateway) 'n' "dns:" FormatString(dhcpInfo.dns1) ; 其中dhcpInfo属性的为int型,要转换成通常见到的位地址则需要转换方法:[java] view plaincopypublic 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网络相关的信息,根据需要来选择方法。二、获取周围WiFi热点
wifiManager提供了一个方法getScanResults()来获得周围的wifi信息,其返回的是一组ScanResult对象,存放在list当中,每个ScanResult对象封装了一个wifi热点相关信息,通过ScanResult对象的属性即可获取到,最常用的两个属性为wifi名称(SSID)和信号强度(level):
[java] view plaincopyArrayList<ScanResult> list; //存放周围wifi热点对象的列表 list = (ArrayList<ScanResult>) wifiManager.getScanResults(); 通常我们会根据所搜索到的wifi信号的强度level从强到弱进行排序并显示在列表上:[html] view plaincopy//将搜索到的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); } } } ScanResult的信号强度属性level是负,因为它是以分贝数来计算的。然后根据你自己的需求创建相应的Adapter将其显示在ListView上。上述方法搜索到的wifi很多,你还可以加上动态更新、wifi过滤等功能进行显示。获取Wifi列表简单示例: by gao_chun.Android------Service之IntentService 首先说一下Service本身存在的两个问题:1.Service不会专门启动一条新的线程,Service与它所在应用位于同一个进程中。2.Service也不是专门一条新的线程,所
Android SDK下载和更新失败的解决方法!!! 最近刚换了电脑,开始搭建Android开发环境的时候,下载SDK总是会出现如下错误:
Android------使用AIDL Service 实现跨进程调用Service 为了实现跨进程通信(interprocesscommunication简称IPC),Android提供了AIDLService。AIDL是一种IDL语言,用于生成可以在Android设备上两个进程之间进行通信的代码如
标签: android.net.wifi
本文链接地址:https://www.jiuchutong.com/biancheng/383314.html 转载请保留说明!上一篇:【API Guides】Android字符串资源的格式化和样式(api/home/getmyregion)
友情链接: 武汉网站建设