26
2017
09

工作随笔---WiFi开发(5)---WIFIWpsConnect类

1.前言

WiFi连接的方式除了普通的密码连接之外,还有一种简便连接的方式—–WPS连接。

(1)WPS(Wi-Fi Protected Setup,Wi-Fi保护设置)(有的叫做AOSS、有的叫做QSS,不过功能都一致。)是由Wi-Fi联盟组织实施的认证项目,主要致力于简化无线局域网的安装及安全性能配置工作。
在传统方式下,用户新建一个无线网络时,必须在接入点手动设置网络名(SSID)和安全密钥,然后在客户端验证密钥以阻止“不速之客”的闯入。这整个过程需要用户具备Wi-Fi设备的背景知识和修改必要配置的能力。Wi- Fi Protected Setup能帮助用户自动设置网络名(SSID)、配置强大的WPA数据编码及认证功能,用户只需输入个人信息码(PIN方法)或按下按钮(按钮设置,或称PBC),即能安全地连入WLAN。这大大简化了无线安全设置的操作。Wi-Fi Protected Setup支持多种通过Wi-Fi认证的802.11产品,包括接入点、无线适配器、Wi-Fi电话以及其他消费性电子设备。

(2)WPS可以帮助客户端用户自动配置网络名(SSID)及无线加密密钥。
对于普通用户来说,无需了解SSID和安全密钥的概念就能实现安全连接;而且用户的安全密钥不可能被外人破解,因为它是随机产生的;最重要的是用户无需记忆冗长的无线加密密码,避免了忘记密码的麻烦。

(3)WPS的优缺点

  • 优点:
    • WPS能够在网络中为接入点及WPS客户端设备自动配置网络名(SSID)及WPA安全密钥。
    • 当连接WPS设备时,用户没有必要去了解SSID和安全密钥等概念。
    • 用户的安全密钥不可能被外人破解,因为它是随机产生的。
    • 信息及网络证书通过扩展认证协议(EAP)在空中进行安全交换,该协议是WPA2 使用的认证协议之一。
    • 用户不必输入预知的密码段或冗长的十六进制字符串。
    • WPS支持Windows Vista操作系统。
       
  • 缺点:
    • WPS不支持设备不依靠AP而直接通讯的“ad hoc”网络。
    • 网络中所有的Wi-Fi设备必须通过WPS认证或与WPS兼容,否则将不能利用WPS简化网络安全配置工作。
    • 由于WPS中的十六进制字符串是随机产生的,所以很难在WPS网络中添加一个非WPS的客户端设备。   
    • WPS是一项新的认证技术,所以并非所有厂商都支持。
    • WPS是Wi-Fi认证产品的可选认证项目。

上述背景摘自https://zhidao.baidu.com/question/562346890360347044.html

2.开发流程

*WPS相关的接口在Android5.0之后的版本才公开,之前的版本中接口状态都是hide的。

(1)WPS(PBC)连接方式
在路由器端按下WPS按钮,然后在手机端也按下WPS(PBC)按钮,等待WPS(PBC)连接。

@Override
public void OnClick(View view) {
    WpsInfo config1=new WpsInfo();
    config1.setup = WpsInfo.PBC;    
    m_wifiUtil.startWps(config1, new MWpsPBCListener());
}
private class MWpsPBCListener implements WifiManager.WpsListener{

        @Override
        public void onCompletion() {
            Toast.makeText(m_Context, "onCompletion,connect success", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onFailure(int arg0) {
            Toast.makeText(m_Context, "onFailure", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onStartSuccess(String arg0) {
            Toast.makeText(m_Context, "onStartSuccess", Toast.LENGTH_LONG).show();
        }

}

(2)WPS(PIN)连接方式
在手机端按下WPS(PIN)按钮,会随机生成pin码,然后将路由器连接电脑,并在相应路由器控制网页输入pin码,等待WPS(PIN)连接。

@Override
public void OnClick(View view) {
    WpsInfo config2=new WpsInfo();
    config2.setup = WpsInfo.DISPLAY;    
    m_wifiUtil.startWps(config2, new MWpsPINListener());
}
private class MWpsPINListener implements WifiManager.WpsListener{

        @Override
        public void onCompletion() {
            Toast.makeText(m_Context, "onCompletion,connect success", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onFailure(int arg0) {
            Toast.makeText(m_Context, "onFailure", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onStartSuccess(String arg0) {

            SysLog.out(TAG, "onStartSuccess", "pin = "+arg0);
            Toast.makeText(m_Context, "onStartSuccess"+arg0, Toast.LENGTH_SHORT).show();
        }

}

(3)WPS(PIN)和WPS(PBC)连接均可以中止操作

@Override
public void OnClick(View view) {
    m_wifiUtil.cancelWps(null);
}
上一篇:工作随笔---WiFi开发(4)---WIFISavedList类 下一篇:数组的拷贝