为什么我为Sensor.TYPE_ROTATION_VECTOR和Sensor.TYPE_GAME_ROTATION_VECTOR获取null?

时间:2015-04-30 19:11:27

标签: android sensor

我有一个Yureka手机,from its specs我可以看到它至少有一个加速度计和一个陀螺仪。

我从网上发现TYPE_ROTATION_VECTOR需要加速度计,陀螺仪和磁力计。由于我没有磁力计,可能是因为我无法得到这个传感器。

然而,从docs TYPE_GAME_ROTATION_VECTOR看起来<nav role="navigation"> <ul> <li> <input type="submit" value="Back"> </li> <li> <button>next</button> </li> </ul> </nav> <div id="content"> <div> <input type="text" /> <input type="text" /> <input type="text" /> </div> </div> ul { list-style: none; } nav ul li:first-child { float: left; } nav ul li:last-child { float: right; } #content { display: table; } #content div { display: table-row; } #content input { display: table-cell; } @media screen and (max-width: 700px) { #content { clear: both; } } 不需要磁力计,为什么我也没有得到这个传感器?

我正在尝试使用此传感器来测量当用户试图将手平放在手上时手机屏幕相对于地面的倾斜角度。

1 个答案:

答案 0 :(得分:1)

首先,您可以尝试使用以下代码打印设备上所有传感器的信息。如果未打印出传感器,则表示传感器不可用。

List<Sensor> deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
for(int i=0; i<gravSensors.size(); i++) {
    // print out sensors information
}

然后,即使您有加速度计和陀螺仪,TYPE_GAME_ROTATION_VECTOR仍可能不受支持。这是因为它是一个软件传感器,并且是由Android系统从其他传感器获得的数据。可能存在决定软件传感器可用性的其他因素,例如,频率,能耗,可靠性。这样,您可能需要使用可从传感器获得的原始数据自己派生其他值。

希望这有帮助!