2011-08-11 56 views
7

我正在开发蜂窝姜饼,我想知道当我使用Sensor.TYPE_ROTATION_VECTOR时使用哪种物理传感器?传感器使用哪些传感器.TYPE_ROTATION_VECTOR

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

谢谢, 马克

+0

你能否详细介绍一下“在两块硬件上表现不同”? – AedonEtLIRA

+0

在执行了一些更多的测试之后,Honeycomb(使用我的平板电脑)使用Sensor.TYPE_ROTATION_VECTOR将会使用加速度计和设备的陀螺仪(这正是我所期望的)。 在我的三星Galaxy S2运行姜饼,它似乎使用磁罗盘的一些非常奇怪的原因。 (我能够通过在设备旁边放置一块强力磁铁来解决这个问题,当我移动它时,应用程序响应磁铁。) 因此姜饼或三星都没有充分利用物理传感器。 – Mark

+0

至于改变传感器,我不认为没有操作系统操作是可能的。至于硬件的使用,我和你在一起,我认为它会使用陀螺仪和加速器。没有太多的意义,为什么它不会。 – AedonEtLIRA

回答

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

+1

嗯,我不这么认为。 Sensor.TYPE_ROTATION_VECTOR只是一个虚拟传感器,操作系统将以某种方式“决定”使用哪个物理传感器来提供旋转​​向量。我看不到改变行为的方法,无论是在我的代码还是在您提供的链接中。 – Mark

6

我知道它已经有一段时间,因为这个问题被问过,但我没有看到一个明确的答案,所以......

如果可用,它将使用全部三个传感器。使用磁场传感器对于获得一些绝对的参考点至关重要。 “旋转传感器”需要初始定位,然后消除陀螺仪随着时间推移的漂移。陀螺仪仍然使用,因为它的精确性和良好的响应时间。加速度计有助于确定重力矢量。

+0

需要说明的是,陀螺仪仅适用于Android 4.0或更高版本。来源:http://developer.android.com/guide/topics/sensors/sensors_motion.html –

+1

搜索的术语是“传感器融合”。 4.0和以上,基本上是一个黑盒子,它读取所有可用的传感器并将它们组合(我想通过卡尔曼滤波器)。然后,所有的传感器,真实的和虚拟的,都被视为传感器融合黑匣子的输出。 –

+2

正确。我的初始来源是http://www.youtube.com/watch?v=C7JQ7Rpwn2k,我建议任何人处理传感器数据。 –

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) - 底层物理传感器:加速度计和磁力(无陀螺仪)。地磁旋转矢量类似于旋转矢量传感器,但是使用磁力计而不使用陀螺仪。该传感器必须基于磁力计。它不能用陀螺仪来实现,并且陀螺仪输入不能被这个传感器使用......底层物理传感器 - 加速度计,磁强计,不能使用陀螺仪。

...

当在设备上没有陀螺仪,并且仅当不存在陀螺仪,则可以实现旋转矢量,线性加速度和重力传感器不使用陀螺仪。

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