您的位置:首页 > 其它

如何确定某段时间之内玩手机次数及其他各种通过传感器&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);


建议

个人建议可以适当的舍弃一些获取到的数据或者对前后两个时间点获取到的数据进行一个对比看下变化范围,如果明显超出正常范围那肯定某个点的数据偏差很大可以生气. 阈值的话看你自己情况需要去调整
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gps 传感器 手机
相关文章推荐