admin 管理员组文章数量: 887018
现在项目的需求是:
1. 带AP功能的机顶盒端能生成二维码,供手机客户端扫描
1.1 如果用非特定应用(手机助手)扫描,则跳转下载手机助手界面
1.2 如果用手机助手扫描,自动连接到该机顶盒的WI-FI
2. 不带AP功能的机顶盒也能生成二维码
2.1 同1.1
2.2 如果用手机助手扫描,自动连接到该机顶盒所连接到的WI-FI
首先,必须了解什么是二维码?
简单来说,二维码就是把一段纯文本用图形样式转换出来了,以便于快速扫描读出。
现代应用中,二维码最常存的文本就是URL,所以也可以想象成二维码其实就是一个URL地址。所以扫描二维码可以跳转到某个界面。
比如我现在做的项目的二维码URL是“http://appproxy.topway:8080/index.htm”,用手机端打开就能够跳转到下载页面,用电脑端打开却显示不出内容。这是因为服务器端会对访问端进行判断,看是否是移动设备,然后进行相应的操作(跳转下载界面也要区分iOS和Android端)。
为什么用微信扫一扫能直接加关注某个人而不是跳转URL呢?
这是因为微信是一个”特别”的应用,扫的是”特别”的二维码。
学过web开发的都知道,网络请求有一种GET方式,是直接把参数放在URL后面的,比如下面扩展的URL:
http://appproxy.topway:8080/index.htm?ssid=xxx&pwd=xxx
这个字符串就带了WI-FI名称和密码。像一些速食店现在都有一个二维码贴在桌子上的,目的就是让用户扫一扫然后自动连接上WI-FI了。但是前提是要用他们公司的应用扫才有用。这是因为URL后面带的参数大家定义的都不同,需要由协商好的软件去处理大家不同的需求,所以才会出现需要用专门的软件去扫一扫。
(同理,网上有的网站说你输入你家店的WI-FI和密码自动免费帮你生成二维码,让店家瞬间高大上,但是客人要连上你家WI-FI必须下它家的产品才可以,原理已经说过了,就是这样来扩展市场的)
好了,扫盲讲到这应该差不多了。
现在针对我的项目需求讲下思路。
1. 带AP功能的机顶盒端能生成二维码,供手机客户端扫描
有必要再科普一下,AP就是Access Point,接入点的意思,就是说这个机顶盒能够自己发射WI-FI供别的设备接入。
那第一个问题最直接的就是:怎么生成二维码?
用到的是google的一个开源二维码项目——zxing,目前基本上和二维码打交道的东西,都会用到它。
只提思路,具体怎么实现另搜百度就好。
(PS:这里发现把二维码改成其他颜色扫描无效,只有黑色可以被应用扫描到,背景改为透明没有关系)
然后我这边建立了个Service,读取机顶盒的AP信息,包括SSID和密码,与访问应用地址形成最终的URL,再通过zxing生成二维码。
到这一步需求1.1已经完成了,因为其他应用扫描二维码会忽略到后面的参数,只识别前面的地址,就会跳转到下载界面。
为了实现1.2,我们在自己的应用扫描时做特别判断,也就是获取后面的参数值,都获取到WI-FI和密码了,就可以通过代码进行自动连接了!~
2. 不带AP功能的机顶盒也能生成二维码
通过前面的分析,2.1不用改代码就可以实现,关键是2.2,如何能获得本机已经连接过的WI-FI的密码?
有两种方法,第一种通过系统API,在11年以后已经不能获得明文密码了,有密码全部用*
代替值返回
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
List<WifiConfiguration> conList = wifiManager.getConfiguredNetworks();
for (WifiConfiguration wifiConfiguration : conList) {
Log.d("wifi", "SSID = " + wifiConfiguration.SSID);
Log.d("wifi", "psk = " + wifiConfiguration.preSharedKey);
}
记得在Manifest文件中添加许可
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
第二种用代码写命令去访问(《Android之查看Wifi密码》)
我已经找到data/misc/wifi/wpa_supplicant.conf
里确实有明文密码。
public StringBuffer
版权声明:本文标题:【Android】多功能二维码实现思路,自动连接WI-FI 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1729143429h1323246.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论