我正在开发一款可以测量汽车加速的应用程序。
我没有使用加速度计,而是阅读了有关线性加速度计的知识并实现了它。
我有两个设备要测试,它在索尼Xperia Z1上运行良好,但我没有得到任何价值的旧阿尔卡特onetouch。
是因为它的android版本(5.1vs4.2),还是因为我的代码错误,或者是硬件限制?
发布于 2016-06-28 06:31:44
摘自Android文档:
TYPE_LINEAR_ACCELERATION
在API level 9 int TYPE_LINEAR_ACCELERATION中增加了一个描述线性加速度传感器类型的常量。
有关更多详细信息,请参阅SensorEvent.values。
常量值: 10 (0x0000000a)
这意味着它可以在任何设备上运行post API 9
请考虑洛克在这篇post中的回应。它说明了您应该使用哪种类型的传感器来测量某些类型的运动。
更新:我将添加洛克回应的信息,因为它可能会对未来的读者有所帮助:
TYPE_ACCELEROMETER使用加速度计,并且仅使用加速度计。它返回原始的加速计事件,只有很少的处理,甚至根本没有处理。
TYPE_GYROSCOPE (如果存在)使用陀螺仪,并且仅使用陀螺仪。与上面一样,它返回原始事件(角速度/ rad/s),根本不进行任何处理(没有偏移/刻度补偿)。
TYPE_ORIENTATION已弃用。它以偏航/俯仰/滚动度为单位返回方向。它的定义不是很好,只有当设备没有“滚动”时才能被依赖。该传感器使用加速度计和磁力计的组合。使用SensorManager的帮助器可以获得稍微更好的结果。这个传感器被严重“处理”了。
TYPE_LINEAR_ACCELERATION、TYPE_GRAVITY、TYPE_ROTATION_VECTOR是“融合”的传感器,分别返回线加速度、重力和旋转向量(一个四元数)。没有定义这些是如何实现的。在一些设备上,它们以硬件实现,在一些设备上,它们使用加速计+磁强计,在其他设备上,它们使用陀螺仪。
在Nexus S和Xoom上,当前未使用陀螺仪。它们的表现就像没有陀螺仪可用一样,就像Nexus One或Droid一样。我们计划在未来的版本中改善这种情况。
目前,利用陀螺仪的唯一方法是使用TYPE_GYROSCOPE并手动积分输出。
我希望这能帮到你,
Mathias
https://stackoverflow.com/questions/38064169
复制相似问题