Android加速度计在任何方向读取

时间:2013-07-20 03:11:26

标签: java android

我正在开发一款Android游戏,根据您倾斜设备的方向计算玩家的移动(左,上,右,下)。

我也想在游戏开始时这样做,它会计算当前的倾斜度,这样如果玩家将手机放在任何位置,他仍然可以玩游戏。

我是这样做的:

(开始时):

defaultAccelX = SceneManager.activity.getAccelX();
defaultAccelY = SceneManager.activity.getAccelY();

(然后是每次更新):

float modifiedAccelX = (SceneManager.activity.getAccelX() - defaultAccelX);
float modifiedAccelY = (SceneManager.activity.getAccelY() - defaultAccelY);

现在,如果播放器将手机放在底部,则此功能正常。但如果我把手机颠倒过来,顶部和底部都会反转,而右边则不起作用。

有谁知道我应该如何处理它以向任何方向工作?

谢谢

1 个答案:

答案 0 :(得分:0)

除线性加速度传感器外,Android还提供对方向传感器的访问。

private SensorManager mSensorManager;
private Sensor mSensor;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);

方向传感器可以为您提供方位角(绕Z轴旋转的度数),俯仰(相同,但X轴)和滚动(相同,但Y轴)。

当您的应用程序运行时,可以访问方向传感器数据,这样即使在播放期间更改了手机的方向,您也可以确定哪种方式可用。

请参阅详情:Android SDK: Position Sensors