Android 蓝牙防丢实现(一)

今天看见朋友分享的一个项目:TrackR bravo

一个声称是同类产品中最轻薄小巧的蓝牙物品防丢器,金属材质的外壳,厚度为3.5mm,直径34mm,仅有一元硬币大小。可以系在钥匙串、钱包、手机平板电脑等容易丢失的物品上。你甚至可以将它挂在狗狗的脖子上或者自行车上,当你找不到时,可以通过手机App定位物品的具体位置,还能显示物件与你相隔的距离。很适合经常丢失东西的健忘人士使用,还是一个不错的防盗器。

下面来谈谈蓝牙防丢设计:Android app Demo 地址:https://play.google.com/store/apps/details?id=com.bipbip.ble

摘要 蓝牙防丢,原理比较简单,实现不是那么简单。在预定的间隔时间内不断的扫描周围的蓝牙设备,读取对应设备的信号强度值存储下来SSID【X1,X2...,Xn-1,Xn】统计分析,去除脏值,然后求加权算术平均数。根据距离和信号强度值的对应关系判断设备之间的距离。

一,概念说明

求平均一般有两种:简单算术平均数arithematic mean和加权平均数weighted mean。简单算术平均计算简单没有考虑到波动和强度指标;一般的在工程领域使用加权平均比较多,加权平均数的公式定义如下:

   163601_FaHI_166646.png

  其中: ----代表算术平均数,x 代表各单位标志值(变量值),f 代表各组单位数(项数)。

  运用条件:统计资料分组时我们不难得出如下结论:平均数水平高低受两个因素的影响(当然数据统计分析都是要在比较大规模的数据基础上进行,否则意义不大):

  (1)受各组变量值( x )大小的影响

  (2)受各组权数(f)大小的影响。(绝对权数表现为次数、频数,相对权数表现为频率)。

 

二,计算步骤

 

(1)采集数据,采集固定间隔时间内的设备的信号强度值数值SSID【X1,X2...,Xn-1,Xn】;

(2)去除脏值,去除数组中的脏值;

(3)求出信号强度值数值SSID【X1,X2...,Xn-1,Xn】对应的权数分布【F1,F2, ... Fn-1,Fn】

 ( 4 ) 处理异常情况(比如某个设备采集到的SSID数组长度太少,距离越界后反馈确认机制)

三,步骤详解

去除脏值Digest,采集固定间隔时间内的设备的信号强度值数值SSID【X1,X2...,Xn-1,Xn】后难免会有一些脏值扰乱最终结果。
首先要确定脏值的判断标准,在这里脏值的判断标准是:如果SSID数组中的一个值偏离SSID数组的简单平均数arithematic mean
大于DeviateFlag(这个标记可以根据程序的实际情况调整,在这里取值20%),那么我们就判断这个值是脏值。

求权数分布,不同的SSID数值对应的权数在这里和时间有关,在这里时间越后,权重会越高;假设权值分布为F【F1,F2, ... ,Fn-1,Fn】。那么F1+F2+ ... +Fn-1+Fn=1=100/100;这里要定义一个值权重补偿因子WCF(Weight Compensation Flag)=50/100,简写WCF(补偿值有点大哦,感觉这个数组也应和SSID的数组长度N有关,后期优化);那么权重补偿递减因子WCD(Decreasing)就是:WCD=WCF/N/2;(N>2  有效)

那么Fn的分布就是:

【1-D1/N,1-D2/n, ... 1-D(n/2)/n, ... , 1+D2/n, 1+D1/N】。-----------------------------------------------------------------------------------------------------

                                                                                  |权重补偿因子:WCF

那么首先要求Dn【D1,D2,... D(n/2), ... , .....】的分布;--|

                                                                                   | 权重补偿递减因子:WCD

if(WCF-WCF*2*i/N>0&&i<N/2)那就一直分布下去..........

处理Dn的长度和Fn的长度(其实是SSID的长度),求出Fn的分布后;

那么weighted mean=SSID对应的分布*Fn对应分布的累加和

 

Android 源码:  https://github.com/AnyLifeZLB/Bluetooth-AntiLost/blob/master/README.md

Android 蓝牙防丢(二)  http://my.oschina.net/zengliubao/blog/518307

附录,参考文档

http://wiki.mbalib.com/wiki/平均数

http://www.stat.nuk.edu.tw/prost/content2/statics_4.htm

http://wiki.mbalib.com/wiki/算术平均数

转载于:https://my.oschina.net/zengliubao/blog/517413

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值