5

所以我一直在寻找大约 3 个小时,我还没有想出一个好的答案/解决方案。

我的问题是:为什么我得到的最大加速度值只有大约 34 m/s^2 或大约 3.5 Gs (34/9.81)。

是因为硬件限制还是软件限制?如果它是硬件,我知道我对此无能为力(或者至少不容易)。如果是软件限制,那么我该如何消除该限制,有什么办法吗?像 API 什么的?

我会很感激任何帮助,谢谢。

注意:我使用的是 Galaxy S,如果有区别的话。我也看过这个问题,但这对我没有帮助:What is android accelerometer min and max range

4

2 回答 2

4

看看这个: https ://electronics.stackexchange.com/questions/11372/samsung-galaxy-s-accelerometer-details 问题包括似乎是 Galaxy S 中使用的加速度计的数据表。显然有三个可能的范围 +/-2g、+/-4g 和 +/-8g。我不是电子专家,所以不会提供比这更多的解释。

根据 developer.android.com,加速度计读数仅与硬件相关: developer.android.com/guide/topics/sensors/sensors_motion.html 因此,您可能更有机会获得有关电气方面的专家答案上面已经引用了工程 stackexchange 论坛:electronics.stackexchange.com

祝你的项目好运!

编辑:关于原始问题的评论:我明白了,因为它在您引用的页面上说 -

“我的理解是,Android 加速度计的默认设置是在 +-2g 的预定义范围内运行。如何通过公共 API 以编程方式更改此范围?有一个 getMaximumRange() 方法,但没有相应的 setMaximumRange() 方法。 "

您想知道是否有基于软件的方法来更改预选范围。同样,我认为 Android API 文档会提到这一点。尝试在electronics.stackexchange.com上询问“动态可选范围”是什么,以及它们是否由物理硬件开关(或类似的东西)设置,或者它们是否可以通过编程方式更改。

第二次编辑:我更彻底地阅读了我向您推荐的页面,并注意到原始提问者检查了 Google API 并得出结论,无法通过它更改范围:

API 不允许更改它们。我认为我可以在api源中找到这些数据,但这并不简单。现在我试试。– MarcoBiagi 2011 年 3 月 13 日在 10:36

于 2012-10-05T04:08:35.400 回答
3

鉴于您从 Galaxy S 读取的最大加速度幅度为 3.5 g,您的 Galaxy S 加速度计似乎设置为每轴加速度计范围为 +/- 2g(即 sqrt(2.0*2.0 + 2.0*2.0 + 2.0 *2.0) = 3.5)。作为参考,以下是 Galaxy S、Moto G 和 Nexus Android 设备的每轴加速度计范围:

Galaxy S:+/- 2g
Moto G:+/- 2g
Nexus 1:+/- 2g
Nexus S:+/- 2g
Nexus 4:+/- 4g
Nexus 5:+/- 2g

每轴加速度计范围通常不会在手机的规格表中给出。因此,如果其他读者碰巧知道他们手机加速度计的最大范围,请随时将其添加到此列表中。

不幸的是,加速度计 Sensor.getMaximumRange() API 不一致:在大多数设备上返回“零到峰值”值,但在某些设备(例如,Moto G)上返回“峰值到峰值”,如跟踪的 Android OS 问题中所述。了解特定设备是否将 Sensor.getMaximumRange() 返回为“零到峰值”或“峰值到峰值”的一种方法是运行免费的传感器数据绘图应用程序(如ftNote)并大力摇晃设备以查看加速度计读数夹在哪里绘制的传感器值。

于 2013-11-14T15:10:11.683 回答