我正在安卓系统上测试TYPE_LINEAR_ACCELERATION传感器--我正在以我认为的标准方式设置它:
acceleration = sensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);
...
sensorManager.registerListener(this, acceleration, kMotionUpdatePeriod);
...
public void onSensorChanged(SensorEvent event)
{
switch(event.sensor.getType())
{
case Sensor.TYPE_LINEAR_ACCELERATION:
Logger.info(this,"Linear Accel %.2f %.2f %.2f",event.values[0], event.values[1], event.values[2] );
break;
}
}我的理解是,LINEAR_ACCELERATION意味着使用传感器融合来从加速度计读数中去除重力,并产生设备正在经历的净加速度。
我在运行5.1.1的安卓佩戴手表(索尼SWR50)上测试了这一点,当设备放在桌子上时,我得到了以下值:
03-04 09:58:58.309 Linear Accel -0.20 0.74 0.14
03-04 09:58:58.328 Linear Accel -0.20 0.70 0.14
03-04 09:58:58.341 Linear Accel -0.23 0.71 0.13我还在运行4.3的Galaxy S3上进行了测试,我得到了:
03-04 09:48:22.307 Linear Accel -0.13 -0.11 -0.39
03-04 09:48:22.412 Linear Accel -0.11 -0.09 -0.34
03-04 09:48:22.507 Linear Accel -0.09 -0.11 -0.42 我本以为会有一些错误--但当设备放在桌子上时,这些值似乎太高了。计算出手表的总加速度约为0.7 m/s2,Galaxy约为0.4 m/s2。
我也在iOS上进行开发,当iOS设备处于静止状态时,我从它们那里获得的userAcceleration数据最多为0.01m/s2,这是我认为您所期望的。
在尝试使用LINEAR_ACCELERATION时,我是否遗漏了什么?
有没有人比我在安卓设备上从iOS上得到的数据更多呢?
发布于 2016-03-04 19:38:03
好了,这是个愚蠢的错误。
iOS使用的是G单位的加速值,而安卓使用的是m/s2,因此相差了9.81倍。
https://stackoverflow.com/questions/35793247
复制相似问题