描述:
在加速感应回调事件中获取手机三个方向的数值,计算其加速度,但是当我快速甩动手机时,不同移动设备计算出来的数据不一致。请问如何解决
Code:
//用户甩动手机 加速感应回调
void GameMainScene::didAccelerate(cocos2d::CCAcceleration *pAccelerationValue)
{
//x,y,z轴的方向上的数据
double x = pAccelerationValue->x;
double y = pAccelerationValue->y;
double z = pAccelerationValue->z;
//计算加速度 , 业务逻辑中需要这个数据
double a = sqrt(x*x+y*y+z*z);
CCLOG("*************加速度: %f",a);
}
操作:
当我快速甩动手机(从代码可以看出,与方向无关), iphone 5 和 5s ipod 5 最大值在 10左右 , iphone 4 和 4s 和 ipod 4 最大值在 3 左右
问题:
如何解决这个问题?
补充:
进过测试发现,此值与操作系统无关,应该只与硬件设备有关,所以,是否可以通过判断具体设备类型进行数据的修正? 但是UIDevice中没有与硬件设备信息相关的API