我使用专为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中找到它。
由于
答案 0 :(得分:8)
通过查看源代码,您可以看到重力传感器实际上是使用巴特沃斯滤波器计算的。我还问了一个关于dsp的问题(here)。希望链接有所帮助,因为它帮助我理解了很多东西。
对于版本中的重力传感器< 2.3如果你想要相同的结果,你需要自己实现过滤。
Here是源代码。
稍后编辑:添加了有效链接!
答案 1 :(得分:2)
传感器TYPE_LINEAR_ACCELERATION
和TYPE_GRAVITY
自API级别9(Android 2.3)起可用,因此您无法在2.1上使用它们。
如果你想要实现它,我想你应该玩手机的方向,这样你就可以知道它是如何定向的,以及相应的加速度中的重力分量。