Android重力感应器(TYPE_GRAVITY)为2.1

时间:2011-11-08 17:50:41

标签: android sensor

我使用专为2.3.3设计的软件,我正在使用重力传感器。

以下代码 -

private SensorManager sman = (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE);
private Sensor magnetfield, gravity;
...
magnetfield = sman.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
gravity = sman.getDefaultSensor(Sensor.TYPE_GRAVITY);

我决定添加对2.1版的支持。但是在2.1中似乎不支持TYPE_GRAVITY,并且我收到错误Sensor.TYPE_GRAVITY不再被识别。

问题 - A)当我搜索“Android重力传感器2.1”时,谷歌链接到2.1设备中演示重力传感器的视频。这是否意味着有办法获得它? B)如果没有,那么可以使用它的最低版本是什么?无法在SDK中找到它。

由于

2 个答案:

答案 0 :(得分:8)

通过查看源代码,您可以看到重力传感器实际上是使用巴特沃斯滤波器计算的。我还问了一个关于dsp的问题(here)。希望链接有所帮助,因为它帮助我理解了很多东西。

对于版本中的重力传感器< 2.3如果你想要相同的结果,你需要自己实现过滤。

Here是源代码。

稍后编辑:添加了有效链接!

答案 1 :(得分:2)

传感器TYPE_LINEAR_ACCELERATIONTYPE_GRAVITY自API级别9(Android 2.3)起可用,因此您无法在2.1上使用它们。

如果你想要实现它,我想你应该玩手机的方向,这样你就可以知道它是如何定向的,以及相应的加速度中的重力分量。