我正在开发一款测量汽车加速度的应用程序。
我没有使用加速度计,而是阅读了线性加速度计并实现了它。
我有两台设备需要测试,它在索尼Xperia Z1上工作正常,但我对旧的阿尔卡特onetouch没有任何价值。
是因为它的Android版本(5.1 vs 4.2),因为我的代码错了或者是硬件限制?
答案 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