安卓加速度计最大值

6

我已经搜索了约3小时,但仍没有得到好的答案或解决方案。

我的问题是:为什么我的最大加速度值只有约34 m/s²或约3.5G(34/9.81)?

这是因为硬件限制还是软件限制?如果是硬件限制,我知道我无法做任何事情(或者至少不容易)。如果是软件限制,那么如何去除这种限制?是否有API或其他方法可以实现?

如果能提供任何帮助,我将不胜感激。谢谢!

:我使用的是Galaxy S,如果有所区别,请告诉我。我也看了这个问题,但它对我没有帮助:What is android accelerometer min and max range


你能解释一下你所说的“限制”是什么意思吗?这有点暗示了你希望获得一个更高的值。你可能需要说明一下是否包括9.8m/s^2的重力作用或者是否已经应用了高通滤波器,并且要提到你正在对Galaxy S施加何种运动。最后,为什么你认为这个数字应该高于3.5G。我并不是说你对还是错,但你为什么会假设存在“限制”呢? - David
仅供参考,加速度计在理论上纯粹是基于硬件的:http://developer.android.com/guide/topics/sensors/sensors_motion.html - David
@David 嗯,根据这个显示,范围应该更高。我不知道这是否有帮助...而且3.5 G听起来太低了,我知道我正在使劲摆动手机。这就是我认为可能是某种限制的原因。 - 0gravity
请查看我下面的答案。传感器通常可以校准到不同的灵敏度范围。我怀疑谷歌没有设置限制。他们的API中没有提到这样的事情:http://developer.android.com/reference/android/hardware/SensorEvent.html#values - David
@David,你能帮我这里吗?这是关于加速度计最小和最大值范围以及传感器数据转换的问题。 - Jeegar Patel
显示剩余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 因此,您可能在上面引用的Electrical Engineering stackexchange论坛上获得更专业的答案: electronics.stackexchange.com
祝你的项目好运!
编辑:关于原始问题的评论: 我明白了,因为它在您引用的页面上写着-
“我的理解是,Android加速计的默认操作范围为+-2g。我该如何通过公共API以编程方式更改此范围?有一个getMaximumRange()方法,但没有相应的setMaximumRange()方法。”
“您想知道是否有一种基于软件的方法来更改预选范围。同样,我认为Android API文档会提到这一点。尝试在electronics.stackexchange.com上询问什么是“动态可选择范围”,它们是否由物理硬件开关(或类似物品)设置,或者是否可以通过编程方式进行更改。”
“第二次编辑:我仔细阅读了我所提到的页面,并注意到原始问题的提问者检查了Google API,并得出结论无法通过它来更改范围:”

API不允许更改它们。我认为我可以在API源代码中找到这些数据,但这并不简单。现在我会尝试。- MarcoBiagi Mar 13 '11 at 10:36


+1 感谢您的回答。它给了我一些想法/洞见,让我知道该搜索什么。 - 0gravity

3

假设从您的Galaxy S读取到的最大加速度值为3.5g,那么您的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 并猛烈摇晃设备,以查看加速度计读数在绘制的传感器值中的裁剪位置。


我有LG G3手机,getMaximumRange()的值是39,这意味着最大范围是69G吗?这是真的吗? - Pavel Poley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接