android的学习:wifi
如果对您有帮助,麻烦您点个赞支持一下哦~谢谢。
一、代入
Wi-Fi是一种可以将个人电脑、手持设备(如PDA、手机)等终端以无线方式互相连接的技术,是一种无线联网技术,常见的是使用无线路由器。
那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网。
如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为“热点”。
二、权限
- android.permission.INTERNET
- android.permisson.ACCESS_NETWORK_STARE
- android.permisson.ACCESS_WIFI_STATE
- android.permisson.CHANGE_NETWORK_STATE
- android.permisson.CHANGE_WIFI_STATE
- android.permisson.CHANGGE_WIFI_MULTICAST_STATE
三、相关的类
与WIFI相关的类位于android.net.wifi这个包中,主要有WifiManger、ScanResult、WifiInfo、WifiConfiguration
- WifiManager 就是用来管理手机的wifi连接
- ScanResult 用来描述已经检测出的接入点,包括接入点的地址,接入点的名称,身份证,频率,信号轻度等等
- WifiInfo 描述wifi无线连接,包括接入点,网络连接状态,IP地址,连接速度,MAC地址,网络ID,信号强度等信息
- WifiConfiguration Wifi网络的配置,包括安全设置等
四、WIFI网卡状态
五、WifiManager
- (1)
- addNetWork(WiConfiguration config) 通过获取到的网络的链接状态信息,来添加网络
- removeNetWork( ) 移除某一个网络
- updateNetWork( WifiConfiguration config ) 更新一个网络连接的信息
- disableNetWork( int netId ) 让一个网络连接失败
- enableNetWork( int netId, Boolean disableOthers ) 连接一个连接
- calculateSignalLevel ( int rssi ,int numLevels) 计算信号的等级
- compareSignalLevel( int rssiA , int rssiB ) 对比连接A 和连接B
- (2)
- getWifiState() 获取一个wifi接入点是否有效
- isWifiEnabled() 判断一个wifi连接是否有效
- setWifiEnabled() 让一个连接有效
- (3)
- startScan() 开始扫描
- getScanResults() 获取扫描测试的结果
- (4)
- ressociate() 即便连接没有准备好,也要连通
- reconnect() 如果连接准备好了,连通
- disconnect() 断开连接
- (5)
- getConfiguredNetworks() 获取网络连接的配置信息
- getConnectionInfo() 获取当前连接的信息
- saveConfiguration()保留一个配置信息
- (6)
- createWifiLock() 创建一个wifi锁,锁定当前的wifi连接
- pingSupplicant() ping一个连接,判断是否能连通
- getDhcpInfo() 获取DHCP的信息
六、WifiInfo
七、实践方法
private final static String TAG = “SSS”;
//缓冲区存放扫描结果
private StringBuffer mStringBuffer = new StringBuffer();
//扫描的列表区,添加归属地,wifi的列表
private List<android.net.wifi.ScanResult> listResult;
//连接wifi成功后的结果
private android.net.wifi.ScanResult mScanResult;
//定义一个WIFIManager对象
private WifiManager mWifiManager;
//定义一个WifiInfo对象
private WifiInfo mWifiInfo;
//网络管理
private List mWificonfiguration;
//定义一个WiFiLock
private WifiManager.WifiLock mWifiLock;
(1)、打开网卡
public void openNetCard(){
if (!mWifiManager.isWifiEnabled()){
mWifiManager.setWifiEnabled(true);
}
}
(2)、关闭网卡
public void closeNetCard(){
if (mWifiManager.isWifiEnabled()){
mWifiManager.setWifiEnabled(false);
}
}
(3)、检查网卡的状态
public void checkNetCardState(){
if (mWifiManager.getWifiState()==0){
Log.i(TAG,"网卡正在关闭");
}else if (mWifiManager.getWifiState()==1){
Log.i(TAG,"网卡已关闭");
}else if (mWifiManager.getWifiState()==2){
Log.i(TAG,"网卡正在打开");
}else if (mWifiManager.getWifiState()==3){
Log.i(TAG,"网卡已经打开");
}else {
Log.i(TAG,"没有获取到网卡状态");
}
}
(4)、扫描周边的网络
public void scan(){
mWifiManager.startScan();
listResult=mWifiManager.getScanResults();
if (listResult!=null){
Log.i(TAG,"当前区域存在无线网络,请查看扫描结果");
}else {
Log.i(TAG,"当前区域不存在网络");
}
}
(5)、获取扫描的结果
public String getScanResult(){
//获取当前的扫描结果之前,要清空一下缓冲区
if (mStringBuffer!=null){
mStringBuffer= new StringBuffer();
}
//开始扫描
scan();
listResult=mWifiManager.getScanResults();
if (listResult!=null){
for (int i =0 ;i<listResult.size();i++){
mScanResult=listResult.get(i);
mStringBuffer=mStringBuffer.append("NO.").append(i+i)
.append(":").append(mScanResult.SSID).append("->")
.append(mScanResult.BSSID).append("->")
.append(mScanResult.describeContents())
.append("->")
.append(mScanResult.level)
.append("->")
.append(mScanResult.capabilities)
.append("\n\n");
}
}
Log.i(TAG,mScanResult.toString());
return mScanResult.toString();
}
(6)、获取连接的网络
public void connect(){
mWifiInfo= mWifiManager.getConnectionInfo();
}
(7)、断开当前的网络
public void disconnect(){
int netId = getNetWorkID();
mWifiManager.disableNetwork(netId);
mWifiManager.disconnect();
mWifiInfo=null;
}
(8)、检查当前网络的状态
public void checkNetWorkState(){
if (mWifiInfo!=null){
Log.i(TAG,"网络正常工作");
}else {
Log.i(TAG,"网络已断开");
}
}
(9)、获取连接网络的ID
public int getNetWorkID(){
return (mWifiInfo==null)?0:mWifiInfo.getNetworkId();
}
(10)、获取网络连接的IP地址
public int getIPAddress(){
return (mWifiInfo==null)?0:mWifiInfo.getIpAddress();
}
(11)、锁定WIFiLock
public void acqurieWifiLock(){
mWifiLock.acquire();
}
(12)、解锁WiFiLock
public void releaseWiFiLocke(){
if (mWifiLock.isHeld()){
mWifiLock.release();
}
}
(13)、创建一个WifiLock
public void createWifiLock(){
mWifiLock=mWifiManager.createWifiLock("TEST");
}
(14)、获取配置好的网络
public List<WifiConfiguration> getmWificonfiguration(){
return mWificonfiguration;
}
(15)、对指定的网络进行连接
public void connetConfiguration(int index){
if (index>=mWificonfiguration.size()){
return;
}
}
(16)、获取Mac地址
public String getMacAddress(){
return (mWifiInfo==null)?"NULL":mWifiInfo.getMacAddress();
}
(17)、获取介入点的BSSID
public String getBSSID(){
return (mWifiInfo==null)?"NUll":mWifiInfo.getBSSID();
}
(18)、获取WifiInfo的所有信息
public String getWifiInfo(){
return (mWifiInfo==null)?"NULL":mWifiInfo.toString();
}
(19)、添加一个网络并连接
public int addNetWord(WifiConfiguration wcg){
int wcgID= mWifiManager.addNetwork(mWificonfiguration.get(2));
mWifiManager.enableNetwork(wcgID,true);
return wcgID;
}
推荐文献:
http://www.demodashi.com/demo/10660.html
https://blog.csdn.net/nanfeibuyi/article/details/83473531
https://www.itdaan.com/so?q=android+wifi&tag=&author=&webId=
本文地址:https://blog.csdn.net/My_Yes/article/details/107498022