欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android的学习:wifi

程序员文章站 2022-07-03 17:50:31
如果对您有帮助,麻烦您点个赞支持一下哦~谢谢。一、代入Wi-Fi是一种可以将个人电脑、手持设备(如PDA、手机)等终端以无线方式互相连接的技术,是一种无线联网技术,常见的是使用无线路由器。那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网。如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为“热点”。二、权限android.permission.INTERNETandroid.permisson.ACCESS_NETWORK_STAREandroid.p...

如果对您有帮助,麻烦您点个赞支持一下哦~谢谢。

一、代入

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网卡状态

android的学习: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

android的学习:wifi

七、实践方法

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

相关标签: Android之WIFI wifi