其他分享
首页 > 其他分享> > Android加速度计问题

Android加速度计问题

作者:互联网

我的游戏使用加速度计,一切正常,但我注意到某些手机会出现轻微问题.游戏会强制将方向设为横向,但是某些手机的屏幕默认方向为横向…

现在,我一直以为用户必须倾斜手机才能正确观看游戏,这意味着X轴的加速度计读数将使玩家在Y方向移动,Y读数将使玩家在X方向移动. .对于具有默认横向屏幕的电话,X将对应于游戏中的X,而Y将对应于游戏中的Y(因为它们不需要倾斜电话).

我的问题是我该如何处理?我可以根据手机的方向调整代码以反转X和Y方向,那么如何以编程方式获取手机的当前方向?如果有更好的方法那就太好了

希望有道理

编辑:

实际上,可以安全地假设,如果设备的长度大于其高度,则屏幕将默认为横向屏幕?

解决方法:

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int rotation = display.getRotation();

http://developer.android.com/reference/android/view/Display.html开始:

public int getRotation ()

Returns the rotation of the screen from its “natural” orientation. The
returned value may be Surface.ROTATION_0 (no rotation),
Surface.ROTATION_90, Surface.ROTATION_180, or Surface.ROTATION_270.
For example, if a device has a naturally tall screen, and the user has
turned it on its side to go into a landscape orientation, the value
returned here may be either Surface.ROTATION_90 or
Surface.ROTATION_270 depending on the direction it was turned. The
angle is the rotation of the drawn graphics on the screen, which is
the opposite direction of the physical rotation of the device. For
example, if the device is rotated 90 degrees counter-clockwise, to
compensate rendering will be rotated by 90 degrees clockwise and thus
the returned value here will be Surface.ROTATION_90.

您必须对设备进行实验,以确保android正确知道“自然”方向.如果是这样,则只需检查ROTATION_90(或ROTATION_270)以查看设备是否在侧面.如果是这样,则切换x和y轴.

标签:android,accelerometer
来源: https://codeday.me/bug/20191013/1911230.html