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=

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值