我可以在所有手机上使用TYPE_LINEAR_ACCELERATION吗?

时间:2016-06-27 22:26:24

标签: android accelerometer

我正在开发一款测量汽车加速度的应用程序。

我没有使用加速度计,而是阅读了线性加速度计并实现了它。

我有两台设备需要测试,它在索尼Xperia Z1上工作正常,但我对旧的阿尔卡特onetouch没有任何价值。

是因为它的Android版本(5.1 vs 4.2),因为我的代码错了或者是硬件限制?

1 个答案:

答案 0 :(得分:1)

取自Android的文档:

TYPE_LINEAR_ACCELERATION

在API级别9中添加 int TYPE_LINEAR_ACCELERATION 描述线性加速度传感器类型的常数。

有关详细信息,请参阅SensorEvent.values。

常数值:10(0x0000000a)

这意味着它应该适用于API 9之后的任何设备

请在此post中考虑Lork的回应。它说明了您应该使用哪种类型的传感器来测量某些类型的运动。

更新:我将添加Lork的回复信息,因为它可能会对未来的读者有所帮助:

  

TYPE_ACCELEROMETER使用加速度计,仅使用加速度计。它返回原始加速度计事件,最少或根本没有处理。

     

TYPE_GYROSCOPE(如果存在)使用陀螺仪而仅使用陀螺仪。如上所述,它返回原始事件(角速度un rad / s),根本没有处理(没有偏移/比例补偿)。

     

不推荐使用TYPE_ORIENTATION。它将方向返回为偏航/俯仰/滚动的角度。它没有很好的定义,只有当设备没有“滚动”时才能依赖它。该传感器使用加速度计和磁力计的组合。使用SensorManager的助手可以获得更好的结果。该传感器经过大量“处理”。

     

TYPE_LINEAR_ACCELERATION,TYPE_GRAVITY,TYPE_ROTATION_VECTOR是“融合”传感器,分别返回线性加速度,重力和旋转矢量(四元数)。没有定义如何实现这些。在某些设备上,它们以h / w实现,在某些设备上,它们使用加速度计+磁力计,在其他一些设备上使用陀螺仪。

     

在Nexus S和Xoom上,目前尚未使用陀螺仪。它们表现得好像没有陀螺仪,比如Nexus One或Droid。我们计划在未来的版本中改善这种情况。

     

目前,利用陀螺仪的唯一方法是使用TYPE_GYROSCOPE并手动整合输出。

     

我希望这有帮助,

     

的Mathias