WiFi签到设计

一、 关于WiFi

在Android中对WiFi操作主要应用以下几个类和接口:

1、 ScanResult

主要用来描述已经检测出的接入点,包括接入点的地址,接入点的名称,身份认证,频率,信号强度等信息。其实就是通过wifi 硬件的扫描来获取一些周边的wifi 热点的信息。

 

2、 WifiConfiguration

Wifi网络的配置,包括安全设置等,在我们连通一个wifi 接入点的时候,需要获取到的一些信息。主要包含四个属性:

BSSID:BSS是一种特殊的Ad-hocLAN(一种支持点对点访问的无线网络应用模式)的应用,一个无线网络至少由一个连接到有线网络的AP和若干无线工作站组成,这种配置称为一个基本服务装置。一群计算机设定相同的 BSS名称,即可自成一个group,而此BSS名称,即所谓BSSID。通常,手机WLAN中,bssid其实就是无线路由的MAC地址。

networkid:网络ID。

PreSharedKey:无线网络的安全认证模式。

SSID:SSID(Service SetIdentif)用于标识无线局域网,SSID不同的无线网络是无法进行互访的。

 

3、 WifiInfo

wifi无线连接的描述,包括(接入点,网络连接状态,隐藏的接入点,IP地址,连接速度,MAC地址,网络ID,信号强度等信息)。这里简单介绍一下WifiManager中常用的方法:

getSSID()

获得SSID(热点名称)

getBSSID()

获取BSSID

getDetailedStateOf()

获取客户端的连通性

getHiddenSSID()

获得SSID 是否被隐藏

getIpAddress()

获取IP 地址

getLinkSpeed()

获得连接的速度

getMacAddress()

获得Mac 地址

getRssi()

获得802.11n 网络的信号

 

4、 WifiManager

wifi连接统一管理类,获取WIFI网卡的状态(WIFI网卡的状态是由一系列的整形常量来表示的):

WIFI_STATE_DISABLING = 0

WIFI网卡正在关闭

WIFI_STATE_DISABLED = 1

WIFI网卡不可用

WIFI_STATE_ENABLING = 2

WIFI网正在打开 WIFI启动需要一段时间)

WIFI_STATE_ENABLED = 3

WIFI网卡可用

WIFI_STATE_UNKNOWN = 4

未知网卡状态

WIFI_AP_STATE_DISABLING = 10

WIFI热点正在关闭

WIFI_AP_STATE_DISABLED = 11

WIFI热点不可用

WIFI_AP_STATE_ENABLING = 12

WIFI热点正在打开

WIFI_AP_STATE_ENABLED = 13

WIFI热点可用

 












二、 关于WiFi签到的策略

策略1、直连WiFi

最为最简单的签到方式,就是指定某个WiFi信号,当签到人连上此WiFi时,将其记录。

策略2、测距

基于WiFi室内定位的思路,通过测距来计算签到人与WiFi热点之间的距离,当数值处于某个合理区间内,则将其记录,视为签到成功。此方法更符合我们的用意。

测距方式包括TOA(Time ofArrival)、TDOA(Time Difference of Arrival)、AOA(Angle ofArrival)以及RSSI(Recieved Signal Strength Index)。TOA是利用接收机接收信号和AP发射信号之间的时间差来确定两者之间的距离,基本原理是在平面上如果能同时接收到三个以上的AP点信号,并且这些AP点位置已知的情况下,就可以利用三角测量的方式,唯一地确定出接收机的位置;类似地,TDOA也是基于三角测量,只不过它是基于接收机到两个AP点的距离差来进行定位,从数学上可以知道,如果接收点到AP1和AP2的距离差已知,那么接收点的平面位置只能是双曲线的一端,如果有AP2和AP3的距离差,那么两条曲线的交点就是接收机实际的位置;虽然TOA和TDOA的定位精度非常高,但是可以看出,这两种方式对于时间同步的要求非常高,由于电磁波的传播速度很快,时间上哪怕是微秒级的误差也会导致测距的几十米左右的误差,并最终影响定位精度,因此对设备的要求也比较高;而RSSI接收的是信号强度,然后再根据一定的模型将信号强度转换成距离,完成测距,常见的是利用WIFI信号来进行RSSI测距。

 

三、 关于RSSI及其距离估计算法

1、 传统RSSI距离估计算法

无线信号都有一个信号强度(RSSI),接收信号强度RSSI是传输功率衰减和传输距离(收发者之间的距离)的函数,可以用公式:

RSSI = - (10nlgD+A)

表示。

则有:

D =10^((abs(RSSI)-A)/(10*n)

其中D是计算距离,RSSI是信号强度,A为发射端和接收端相隔1米时的信号强度的绝对值,n是环境衰减因子。对于不同的热点A的值是不一样的,而且对于同是1米的情况下,环境对于信号强度也是有影响的。n是环境衰减因子,自然跟环境有关。n一般取经验值。

 

2、 干扰因素

式中的A和n的数值决定了接收信号强度和信号传输距离的关系。由于在不同环境中参考节点的信号衰减与距离关系是变化的,因此在不同环境中n的值再采用经验值会导致一定的误差。

 

3、 优化改进

由于受到周围环境的各种其它因素的干扰,接收机接收的信号中可能含有随机性的误差,因此在进行处理之前,需要先对这些信号进行滤波处理,而滤波的方法有很多,目前主要的方法有均值滤波、高斯滤波、修正加权滤波及卡尔曼滤波。另外,在利用RSSI的方式进行测距时,接收机接收的是信号的强度,如何把信号强度转化为实际的距离值,就需要用到相应的模型,目前的测距模型一般可分为经验模型和确定性模型,经验模型主要是根据实测数据来建立模型和参数回归,而确定性模型是根据信号的特性,选用一定的数学模型来拟合,常见的确定性模型包括Ericsson多重断点模型、对数距离路径损耗模型、衰减因子模型和K-M模型。

对此我采取了加权滤波的方式来剔除一些信号采集以及距离计算上的干扰。参考方法详见网址:http://www.doc88.com/p-9975710682799.html

 

四、 算法尝试与实际困难

基于上述方法,设计了一个demo(代码见博文:简单的WiFi测距demo)进行试验,通过连接的当前WiFi热点信号强度估算距离。结果如下:

这是在距离热点1米左右距离进行采集计算的结果,误差0.2米左右,还可以接受。但是当多次采集、较大距离采集时则会出现衰减因子因为信号强度不稳定且采集次数不够存在较大偶然性导致计算数值不准确,反过来致使计算的距离出现较大误差的现象。这给此方法的应用带来了困难。也不排除因为采用终端连接WiFi的方式导致终端与热点之间信号较弱时,热点增大功率保持信号的影响因素。因此还需要采用终端不连接WiFi的方式再进行一次实验。除此以外,在实际应用中受制于环境因素、终端功率、芯片平台不同,甚至是WiFi天线的厂商不同,使得环境衰减因子n和发射端和接收端相隔1米时的信号强度的绝对值A都会不同,对估算距离产生不同程度影响,这是造成在应用过程中情况复杂、通用性低的重要原因。

五、最终签到方案

经过与导师及同事的讨论分析,我决定采用这样的一种签到方案:

1、收集公司WiFi热点mac地址建立列表。

2、在终端不连接WiFi热点的情况下,应用通过后台去扫描附近热点,当存在之前采集建立WiFi热点列表中的mac地址时(可能多个),选择其中信号强度最大的WiFi热点,通过信号强度估算终端与热点之间的距离,当处于某合理距离区间时,则将其终端信息进行记录,视为一次有效的签到,存入数据库。

3、否则,估算距离超出合理区间或不存在之前采集建立WiFi热点列表中的mac地址或存在但是信号强度均低于某个阈值时都不算做打卡有效,不进行记录,直到存在有效打卡条件时才进行记录。

基于这样的一种思路,我将在下周进行demo的开发工作和后续的机制完善工作。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
本系统旨在基于移动设备WIFI环境下解决学生签到,教师查询考勤记录,发布公告等问题。本课题研究成果如下: (1)通过调查研究发现便捷,低成本的移动设备主要趋向于安卓智能设备。尽管Apple iPhone 系列吸引了广大用的眼球,但是Google安卓系统的智能手机却一直是国内市场的“主力军”。【1】【通信信息报/2012年/4月/18日/第B04版 玩转终端 安卓独占中国市场七成份额 中低端手机加速规模扩张】同时Apple 手机成本相对较高,在普通高校学生使用率较低。本系统采用开发安卓的客户端简单APP应用调用安卓设备的底层硬件功能,安卓APP通过HTTP 协议、Web Services与服务器ASP.NET网站数据资源进行交互。 (2)安卓移动设备在连接上WIFI时可以通过安卓系统WIFI Manager类管理WIFI状态,获得设备的物理地址,通过这一物理地址作为与学生学号绑定的条件,解决学生代签漏签问题。 (3)开发出教师使用端,主要功能是释放WIFI信号,发布公告,查询学生的签到情况等功能。WIFI热点释放功能依赖于Java反射机制,逆向解析并调用WIFI Manager类中的方法去实现热点的打开、关闭和状态管理。【2使用Java反射机制逆向分析类方法之间的关系DOI:10.16184/j.cnki.comprg.2016.19.006 分类号:TP312.2】 (4)开发web服务端实现管理员对教师、课程、专业、及学生等基本信息的管理功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值