哪些传感器用于Sensor.TYPE_ROTATION_VECTOR

时间:2011-08-11 14:23:16

标签: android

我正在为Honeycomb Gingerbread开发,我想知道在使用Sensor.TYPE_ROTATION_VECTOR时使用了哪些物理传感器?

它是否使用罗盘和加速度计的组合?还是陀螺+加速?还是全部三个?或者是其他东西? 我问的原因是我的应用程序在两个不同的硬件上表现不同,它们实际上应该具有相同类型的传感器。

谢谢, 标记

4 个答案:

答案 0 :(得分:6)

我意识到问题被问到已经有一段时间了,但我没有看到明确的答案,所以......

如果它们可用,它会使用所有三个传感器。磁场传感器的使用对于获得一些绝对参考点至关重要。 “旋转传感器”需要首先定向自身,然后消除陀螺仪随时间推移引入的漂移。陀螺仍然使用,因为它的精确度和良好的响应时间。加速度计有助于确定重力矢量。

答案 1 :(得分:3)

理论:

要让手机知道方向,包括方位角,您需要在现实世界中引用一架飞机。 该平面由两个非共线矢量计算:重力(加速度计)和磁场力。这个向量DO GET在地球上的两个“位置”共线,但幸运的是它靠近地球两极。

练习:

使用磁力计和加速度计,您可以获得方向。 不幸的是,如果您将手机提交给任何线性加速度,或者如果存在磁性干扰,则这些措施会产生噪音。 使用陀螺仪可以显着提高响应时间/准确度(因为它是一种权衡),但并不是所有应用都必不可少。

答案 2 :(得分:2)

看起来它使用您定义的任何传感器与SensorManager一起使用。反过来,传感器管理器将广播您的代码将要监听的传感器事件。

请查看下面的演示代码以查看示例。

来源:

http://developer.android.com/reference/android/hardware/SensorManager.html

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.html

答案 3 :(得分:1)

来自https://source.android.com/devices/sensors/sensor-types.html,这是设备OEM用于实现各种Android传感器类型的规格:

  

旋转矢量(SENSOR_TYPE_ROTATION_VECTOR) - 基础物理传感器:加速度计,磁力计和陀螺仪...通常通过加速度计,陀螺仪和磁力计读数的集成获得......基础物理传感器 -
  加速度计,磁力计和(当存在时)陀螺仪。

     

...

     

游戏旋转向量(SENSOR_TYPE_GAME_ROTATION_VECTOR) - 底层物理传感器:加速度计和陀螺仪(无磁力计)。游戏旋转矢量传感器类似于旋转矢量传感器但不使用地磁场。因此,Y轴不指向北方,而是指向其他参考。当陀螺仪绕Z轴漂移时,该参考值可以漂移相同的数量级...基础物理传感器 -
  加速度计,陀螺仪不得使用磁力计。

     

...

     

地磁旋转矢量(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) - 基础物理传感器:加速度计和磁力计(无陀螺仪)。地磁旋转矢量类似于旋转矢量传感器,但使用磁力计而不使用陀螺仪。该传感器必须基于磁力计。它无法使用陀螺仪实现,此传感器无法使用陀螺仪输入......基础物理传感器 - 加速度计,磁力计,绝不能使用陀螺仪。

     

...

     

当设备上没有陀螺仪时,只有没有陀螺仪时,您可以在不使用陀螺仪的情况下实现旋转矢量,线性加速度和重力传感器。

因此,确切的实现可能因设备而异 - 某些设备可能没有陀螺仪。