Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓加速度计在任何方向的读数_Java_Android - Fatal编程技术网

Java 安卓加速度计在任何方向的读数

Java 安卓加速度计在任何方向的读数,java,android,Java,Android,我正在开发一款android游戏,玩家的移动(左、上、右、下)取决于你倾斜设备的方向 我还想在游戏开始时这样做,它计算当前的倾斜,这样,如果玩家在任何位置握住手机,他仍然可以玩游戏 我是这样做的: (启动时): (然后在每次更新时): 现在,如果玩家将手机保持在底部,则此功能将正常工作。但是,如果我把手机倒置,手机的顶部和底部会颠倒,右边就不起作用了 有人知道我应该如何处理它以在任何方向工作吗 谢谢除了线性加速度传感器,安卓还提供方向传感器的访问 private SensorManager mS

我正在开发一款android游戏,玩家的移动(左、上、右、下)取决于你倾斜设备的方向

我还想在游戏开始时这样做,它计算当前的倾斜,这样,如果玩家在任何位置握住手机,他仍然可以玩游戏

我是这样做的:

(启动时):

(然后在每次更新时):


现在,如果玩家将手机保持在底部,则此功能将正常工作。但是,如果我把手机倒置,手机的顶部和底部会颠倒,右边就不起作用了

有人知道我应该如何处理它以在任何方向工作吗


谢谢

除了线性加速度传感器,安卓还提供方向传感器的访问

private SensorManager mSensorManager;
private Sensor mSensor;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
方位传感器可以为您提供方位角(绕Z轴旋转的程度)、俯仰角(相同,但X轴)和滚动角(相同,但Y轴)

在应用程序运行时,可以访问方向传感器数据,这样即使在播放过程中手机的方向发生了变化,您也可以确定向上的方向


详情见:

“但如果我把手机倒置,上下颠倒,右不起作用。”这是否意味着右倾斜会将播放器向左移动?不,左倾斜会向左移动,右倾斜不会将播放器向右移动,或者稍微有点奇怪。如果左倾斜有效,右倾斜无效,你为什么不试着从11点滚到3点,然后完全左转呢。。记录你的坐标。
float modifiedAccelX = (SceneManager.activity.getAccelX() - defaultAccelX);
float modifiedAccelY = (SceneManager.activity.getAccelY() - defaultAccelY);
private SensorManager mSensorManager;
private Sensor mSensor;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);