首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当设备处于静止状态时,为什么TYPE_LINEAR_ACCELERATION会产生非零值?

当设备处于静止状态时,为什么TYPE_LINEAR_ACCELERATION会产生非零值?
EN

Stack Overflow用户
提问于 2016-03-04 18:10:09
回答 1查看 169关注 0票数 0

我正在安卓系统上测试TYPE_LINEAR_ACCELERATION传感器--我正在以我认为的标准方式设置它:

代码语言:javascript
复制
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)上测试了这一点,当设备放在桌子上时,我得到了以下值:

代码语言:javascript
复制
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上进行了测试,我得到了:

代码语言:javascript
复制
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上得到的数据更多呢?

EN

回答 1

Stack Overflow用户

发布于 2016-03-04 19:38:03

好了,这是个愚蠢的错误。

iOS使用的是G单位的加速值,而安卓使用的是m/s2,因此相差了9.81倍。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35793247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档