我正在开发一款视频游戏,其中倾斜是玩家的主要控制方法。 但我希望玩家能够在躺在沙发上玩游戏。 目前,如果设备是平坦的,游戏效果最好,如果你倾斜一点点仍然有效,因为我计算加速度计的起点。但这会产生意想不到的结果。
Android中是否有办法从特定的起点计算设备的旋转度(度)?它甚至可能吗?有人能够做到这一点吗? 我知道SpeedX能够掌握旋转,但我需要它来倾斜。
谢谢
答案 0 :(得分:2)
您可以获得有关角度(旋转)速度的常量回调。您可以将其转换为角度位置。 [1]
[1] http://developer.android.com/guide/topics/sensors/sensors_motion.html#sensors-motion-gyro
答案 1 :(得分:1)
您可以通过
获取设备旋转度数OrientationEventListener.onOrientationChanged()
范围从0到359度,但您必须自己计算起点和旋转度变化之间的差异。
void onOrientationChanged (int orientation) {
//orientation is an argument which represents rotation in degrees
}
您也可以通过调用侦听器的enable()
和disable()
方法来启用和禁用此侦听器。以下是谷歌的deveoper reference docs。
this是关于如何使用方向监听器的链接。
public class SimpleOrientationActivity extends Activity {
OrientationEventListener mOrientationListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mOrientationListener = new OrientationEventListener(this,
SensorManager.SENSOR_DELAY_NORMAL) {
@Override
public void onOrientationChanged(int orientation) {
Log.v(DEBUG_TAG, "Orientation changed to " + orientation);
}
};
if (mOrientationListener.canDetectOrientation() == true) {
Log.v(DEBUG_TAG, "Can detect orientation");
mOrientationListener.enable();
} else {
Log.v(DEBUG_TAG, "Cannot detect orientation");
mOrientationListener.disable();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
mOrientationListener.disable();
}
}
还有其他适用于游戏和其他目的的费率值。默认速率SENSOR_DELAY_NORMAL最适合简单的方向更改。其他值,例如SENSOR_DELAY_UI和SENSOR_DELAY_GAME可能适合您。
This是实现相同代码并提供良好解释的另一个有用链接。