如何确定某段时间之内玩手机次数及其他各种通过传感器&GPS数据可进行的分析
2017-11-30 15:51
651 查看
采集数据的方式及来源
准备工数据:
可通过传感器获取到的数据及GPS数据
可以通过GPS获取到的数据GPS点对应的采集时间,GPS点精度
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{ //获取到的locations这个是刷新时间内获取到的定位点的数据,建议便利数组取到精度最好的那个点(精度值也就说GPS的误差范围,当精度值越小的时候说明这个点的定位范围越小,约准确) double minHorizonAcc = -1; for (CLLocation * loc in locations) { NSLog(@"=====精度为:%lf",loc.horizontalAccuracy); if (minHorizonAcc == -1) { minHorizonAcc = loc.horizontalAccuracy; bestLocation = loc; }else { if(loc.horizontalAccuracy <= minHorizonAcc) { bestLocation = loc; } } } //在返回的GPS点上还有一个叫做speed的速度 这个速度默认没有速度的时候返回-1,但是当你有速度的时候他需要1-3秒左右的时间才会返回你有的速度而不会是马上 float speed = bestLocation.speed; //如何确定GPS某两个点之间的移动距离 distance = [GPS1 distanceFromLocation:GPS2]; }
通过传感器可以获取到的数据
CMDeviceMotion *motion = [CMDeviceMotion alloc] init];//加速度值
motion.userAcceleratio—xyz轴分别有对应的加速度
motion.rotationRate —xyz轴有对应的角速度
motion.attitude —xyz对应的欧拉角
发生的行为
1.某段时间之内如何知道玩手机次数
对于处理这个问题考虑了两个方面计算玩手机.1是打电话,2是手机发生角度变化,所以要在1的情况下时避免重复计算玩手机次数.打电话可以通过距离传感器来计算,触碰手机可以通过欧拉角电话来判断. 但是当1发生的时候,2也会发生,这个时候请作出判断
打电话很好判断
1很好判断 距离感应器就可以做到
2其实是可以通过欧拉角来判断的,iOS中的欧拉角对应在xyz轴上进行变化,我们要判断的是手机在你手上和水平的夹角值,这儿值是一个变化值在0-90之间 划重点:这是变化值 值得是和水平的夹角 这个要用到获取到的motion.attitude.yaw值进行判断. 看角度超过多少算是玩手机,这个临界值你可以自行测试
2.如何判断在运动过程中是否停止
其实大多数人第一反应都是判断几个点之间的位移量变化但是还有个更巧妙的方法,前边我们拿到GPS某个点的 数据时候是有速度的如果两个点之间的速度小于我们规定的一个阀值,通过设置不同的阀值我们可以知道不同情况下速度的变化程度,就可以分析出来很多东西,比如用速度的变化可以区分出来出行的方式.
3.如何判断我的运动轨迹
不通过高德等定位软件,如何拿到我的运动轨迹呢,手机的方向都是针对手机朝向的,如果我手机不对着我的前进方向怎么办呢?其实这个也可以处理.我们前边通过传感器拿到了角速度和欧拉角,角速度通过计算是可以反转城地球所在的磁场方向的 反转的方法float xr = -v.pitch; float yr = v.roll; double cosXr = cos(xr); double cosYr = cos(yr); double sinYr = sin(yr); double tanXr = tan(xr); tmpV.rotationRateX = (float) (v.rotationRateX + v.rotationRateY * sinYr * tanXr + v.rotationRateZ * cosYr * tanXr); tmpV.rotationRateY = (float) (v.rotationRateY * cosYr - v.rotationRateZ * sinYr); tmpV.rotationRateZ = (float) (v.rotationRateY * sinYr / cosXr + v.rotationRateZ * cosYr / cosXr);
建议
个人建议可以适当的舍弃一些获取到的数据或者对前后两个时间点获取到的数据进行一个对比看下变化范围,如果明显超出正常范围那肯定某个点的数据偏差很大可以生气. 阈值的话看你自己情况需要去调整相关文章推荐
- 【量化小讲堂-Python&Pandas系列01】如何快速上手使用Python进行金融数据分析
- pixhawk 从main开始分析传感器数据如何流动起来,以GPS为例
- pixhawk 从main开始分析传感器数据如何流动起来,以GPS为例
- iOS开发工具-如何使用网络封包分析工具Charles,通过配置proxy对http、https、tcp、udp 等协议的请求响应过程交互信息进行分析、判断、解决我们移动开发中的遇到的各种实际问题。
- 如何通过网站优化对网站数据进行分析
- 如何通过网站优化对网站数据进行分析
- 如何使用Hive&R从Hadoop集群中提取数据进行分析
- 如何进行网站运营数据分析?
- 使用热备份进行分时恢复----怎样通过归档逐步恢复以缩短数据迁移时间
- 如何通过销售发票和日记帐事务信息进行销售交货与退货信息分析
- winfrom如何通过http来进行通信,并且通过传递json格式的数据可接受json格式的数据
- .NET中如何通过文本框中按回车键进行的提交数据
- 通过Excel分析测试数据同步复制持续时间
- 如何正确进行数据分析
- 转 winfrom如何通过http来进行通信,并且通过传递json格式的数据可接受json格式的数据
- .NET中如何通过文本框中按回车键进行的提交数据
- 如何通过采集、管理和分析数据以创造商业价值
- 如何进行各种码制数据之间转换
- 深入浅出算法分析(上)——如何进行算法分析&渐近符号介绍
- 如何对const TDesC&数据类型进行Trim