Android——WiFi类
来源:互联网 发布:淘宝网店开店流程 编辑:程序博客网 时间:2024/06/05 20:27
WiFi类
WiFi简介
WiFi是一种无线联网技术,常见的是使用无线路由器。那么在这个信号覆盖的范围内都可以采用WiFi连接的方式进行联网。如果无线路由器连接了一个ADSL线路或者其他的联网线路,则又被称为“热点”。
在Android中对WiFi操作,Android本身提供一些有用的包,在anroid.net.wifi包下面。
WiFi常用的类
ScanResult
主要用来描述已经检测出的接入点,包括接入点地址,接入点名称,身份认证,频率,信号强度等信息。
WifiConfiguration
Wifi网络的配置,包括安全设置等,在我们连通一个wifi 接入点的时候,需要获取到的一些信息。主要包含四个属性:
BSSID:
BSS是一种特殊的Ad-hoc
LAN(一种支持点对点访问的无线网络应用模式)的应用,一个无线网络至少由一个连接到有线网络的AP和若干无线工作站组成,这种配置称为一个基本服务装置。一群计算机设定相同的
BSS名称,即可自成一个group,而此BSS名称,即所谓BSSID。通常,手机WLAN中,bssid其实就是无线路由的MAC地址。
networkid:网络ID
PreSharedKey:无线网络的安全认证模式。
SSID:
SSID(Service Set Identif)用于标识无线局域网,SSID不同的无线网络是无法进行互访的。
WifiInfo
wifi无线连接的描述,包括接入点,网络连接状态,隐藏的接入点,IP地址,连接速度,MAC地址,网络ID,信号强度等信息。这里简单介绍一下这里的方法:
getBSSID() //获取BSSIDgetDetailedStateStateOf() //获取客户端的连通性getHiddenSSID() //获取SSID是否被隐藏getIpAddress() //获取IP地址getLinkSpeed() //获取连接速度getMacAdress() //获取Mac地址getRssi() //获取802.11n网络信号getSSID() //获取SSIDgetSupplicanState() //返回具体客户端状态信息
WiFiManager
用来管理我们的wifi 连接,这里已经定义好了一些类,可以供我们使用,获取WiFi网卡状态。
WiFi常量
WIFI网卡的状态是由一系列的整形常量来表示的。
WIFI_STATE_DISABLING = 0 WIFI网卡正在关闭WIFI_STATE_DISABLED = 1 WIFI网卡不可用WIFI_STATE_ENABLING = 2 WIFI网正在打开 (WIFI启动需要一段时间)WIFI_STATE_ENABLED = 3 WIFI网卡可用WIFI_STATE_UNKNOWN = 4 未知网卡状态WIFI_AP_STATE_DISABLING = 10 WIFI热点正在关闭WIFI_AP_STATE_DISABLED = 11 WIFI热点不可用WIFI_AP_STATE_ENABLING = 12 WIFI热点正在打开WIFI_AP_STATE_ENABLED = 13 WIFI热点可用
WiFi权限
WiFi需求申请权限,在AndroidManifest.xml文件中填写。
1.<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission>//改变WiFi状态。2. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>//改变WiFi多播状态3. <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>//获取WiFi状态。4. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
常用的方法
1.打开WiFi
//开启WiFipublic void WiFiOpen(){ if(!localWifiManager.isWifiEnabled()){ localWifiManager.setWifiEnabled(true); }}
2.扫描WiFi信号
//扫描wifipublic void WifiStartScan(){ localWifiManager.startScan();}
3.得到扫描WIFI结果
//得到Wifi配置好的信息public void getConfiguration(){ wifiConfigList =localWifiManager.getConfiguredNetworks()//得到配置好的网络信息 for(int i =0;i<wifiConfigList.size();i++){ Log.i("getConfiguration",wifiConfigList.get(i).SSID); Log.i("getConfiguration",String.valueOf(wifiConfigList .get(i).networkId)); }}
5、根据WIFI的名称SSID判定指定WIFI是否已经配置好,配置好则返回其networkId,用于连接。之前尝试了BSSID地址没成功,所以只能使用SSID
//判定指定WIFI是否已经配置好,依据WIFI的地址BSSID,返回NetIdpublic int IsConfiguration(String SSID){ Log.i("IsConfiguration",String.valueOf(wifiConfigList.size())); for(int i = 0; i < wifiConfigList.size(); i++){ Log.i(wifiConfigList.get(i).SSID,String.valueOf(wifiConfigList.get(i).networkId)); if(wifiConfigList.get(i).SSID.equals(SSID)){//地址相同 return wifiConfigList.get(i).networkId; } } return -1;}
6、如果需要连接的WIFI没有配置好,即没有保存密码。则为指定名称ssid的WIFI添加密码信息psw,添加成功后返回给其分配的networId,同于连接
//添加指定WIFI的配置信息,原列表不存在此SSIDpublic int AddWifiConfig(List<ScanResult> wifiList,String ssid,String pwd){ int wifiId = -1; for(int i = 0;i < wifiList.size(); i++){ ScanResult wifi = wifiList.get(i); if(wifi.SSID.equals(ssid)){ Log.e("AddWifiConfig","equals"); WifiConfiguration wifiCong = new WifiConfiguration(); wifiCong.SSID = "\""+wifi.SSID+"\"";//\"转义字符,代表" wifiCong.preSharedKey = "\""+pwd+"\"";//WPA-PSK密码 wifiCong.hiddenSSID = false; wifiCong.status = WifiConfiguration.Status.ENABLED; wifiId = localWifiManager.addNetwork(wifiCong);//将配置好的特定WIFI密码信息添加,添加完成后默认是不激活状态,成功返回ID,否则为-1 if(wifiId != -1){ return wifiId; } } } return wifiId;}
7、根据步骤6配置好需要连接的WIFI密码信息后,下面通过networkId连接指定WIFI。在连接经过步骤6刚添加配置信息的WIFI信号之前需要重新执行下步骤4,得到新的配置好信息的列表。
//连接指定Id的WIFIpublic boolean ConnectWifi(int wifiId){ for(int i = 0; i < wifiConfigList.size(); i++){ WifiConfiguration wifi = wifiConfigList.get(i); if(wifi.networkId == wifiId){ while(!(localWifiManager.enableNetwork(wifiId, true))){//激活该Id,建立连接 //status:0--已经连接,1--不可连接,2--可以连接 Log.i("ConnectWifi",String.valueOf(wifiConfigList.get(wifiId).status)); } return true; } } return false;}
- Android——WiFi类
- Android—WIFI开发流程
- android——wifi系统架构
- android——wifi系统架构
- android——wifi系统架构
- android自动连接wifi——WifiManager
- android——wifi系统架构
- android——wifi系统架构
- android——wifi系统架构
- 学习笔记——android wifi socket
- android常用Wifi类
- Android WIFI 类分析
- Android WIFI工具类
- Android WIFI连接开发 WIFI工具类
- Android WiFi开发教程(一)——WiFi热点的创建与关闭
- Android WiFi开发教程(二)——WiFi的搜索和连接
- Android WiFi开发教程(三)——WiFi热点数据传输
- Android WiFi开发教程(一)——WiFi热点的创建与关闭
- LeetCode编程练习
- antrl4学习(三)——用idea实现简单计算器
- LeetCode编程练习
- C++开发uwp的坑
- LeetCode编程练习
- Android——WiFi类
- 父子上下文的关系以及对子上下文容器中Action进行AOP(事务)的思想 (important)
- Chrome像 Firefox/IE 一样拖拉收藏网页
- 同一个文件Linux环境下和windows环境下md5_file处理出来的结果不一致
- VodeoCapture读取.avi视频报错
- DispatcherServlet 特殊的bean
- 集合框架知识点(全)
- 监控网站更新脚本
- -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable