zoukankan      html  css  js  c++  java
  • Android之WifiManager

      移动设备离不开网络,android平台中在包android.net.wifi下提供了一些类专门用于管理设备的Wifi功能。该包下主要存在如下几个类:

    1、  ScanResult:主要用来描述通过Wifi硬件扫描获取的周边的wifi热点的信息。包含的字段信息和方法如下图:

    2、  WifiConfiguration:此类用于描述Wifi网络的配置信息,包括安全配置信息。在该类中提供了如下几个之类,主要用于说明Wifi的加密方式。

      3、  WifiInfo:用于描述已经链接的Wifi的信息,通过如下方法,可以获取相关的信息

    getBSSID():获取BSSID,以XX:XX:XX:XX:XX:XX的形式

    getDetailedStateOf(SupplicantState suppState):获取网络链接的状态。

    getHiddenSSID():SSID是否被隐藏。

    getIpAddress():获取IP地址

    getLinkSpeed():获取链接的速度

    getNetworkId():获取网络编号

    getRssi():获取强度。

    getSSID():获取SSID信息

    getSupplicantState():获取客户端状态信息

    4、  WifiManager:该类主要用来管理Wifi,里面含有许多方法,如下图,具体使用可以查看下面的案例。

    下面我们通过一个案例来演示WifiManager的具体使用方法,案例界面效果如下图:

     

    Activity代码如下

    //获取WifiManager
    wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
    
    
    /**
     * 扫描网络
     * @param v
     */
    public void netScan(View v){
        //启动扫描
        wifiManager.startScan();
        //获取扫描结果
        List<ScanResult> mData= wifiManager.getScanResults();
        ScanReslutAdapter adapter = new ScanReslutAdapter(mData);
        listView.setAdapter(adapter);
    }
    /**
     * 打开网络
     * @param v
     */
    public void openNet(View v){
        if(!wifiManager.isWifiEnabled()){
            wifiManager.setWifiEnabled(true);
        }
    }
    /**
     * 关闭网络
     * @param v
     */
    public void closeNet(View v){
        if(wifiManager.isWifiEnabled()){
            wifiManager.setWifiEnabled(false);
        }
    }
    /**
     * 获取网络状态
     * @param v
     */
    public void getNetState(View v){
        int state= wifiManager.getWifiState();
        String stateStr = "";
        switch (state){
            case WifiManager.WIFI_STATE_DISABLED:
                stateStr="DISABLED";
                break;
            case WifiManager.WIFI_STATE_DISABLING:
                stateStr="DISABLING";
                break;
            case WifiManager.WIFI_STATE_ENABLED:
                stateStr="ENABLED";
                break;
            case WifiManager.WIFI_STATE_ENABLING:
                stateStr="ENABLING";
                break;
        }
        netState.setText("网络状态:"+stateStr);
    }
    
    /**
     * 监控Wifi信号的强度
     * @param v
     */
    public void monitorSignal(View v){
        //获取当前Wifi的链接信息
        WifiInfo wifiInfo= wifiManager.getConnectionInfo();
        //获取信号强度
        int level = wifiInfo.getRssi();
        //获得信号强度值
        level = wifiInfo.getRssi();
        //根据获得的信号强度发送信息
        String levelStr="无信号";
        if (level <= 0 && level >= -50) {
            levelStr="信号最好";
        } else if (level < -50 && level >= -70) {
            levelStr="信号较好";
        } else if (level < -70 && level >= -80) {
            levelStr="信号一般";
        } else if (level < -80 && level >= -100) {
            levelStr="信号差";
        }
        netInfo.setText("信号强度:"+levelStr);
    }

    注意,访问Wifi需要用到如下权限:

    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    作者:杰瑞教育
    出处:http://www.cnblogs.com/jerehedu/ 
    版权声明:本文版权归杰瑞教育技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    技术咨询:JRedu技术交流
     
  • 相关阅读:
    python random模块
    PAMIE- Python实现IE自动化的模块
    python 教程 第一章、 简介
    python 教程 第三章、 运算符与表达式
    python 教程 第四章、 控制流
    python 教程 第五章、 函数
    python 教程 第六章、 模块
    python 教程 第七章、 数据结构
    职业生涯2
    Nginx 报错: nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory) 的解决方法
  • 原文地址:https://www.cnblogs.com/jerehedu/p/4913729.html
Copyright © 2011-2022 走看看