我的游戏使用加速度计,一切正常但我注意到某些手机会出现轻微问题。游戏强制定位为风景,但有些手机具有默认的横向屏幕方向...
现在我总是假设用户不得不倾斜他们的手机以正确看到游戏,这意味着X轴的加速度计读数会将玩家移动到Y,而Y读数会移动玩家在X中。对于具有默认横向屏幕的手机,X将对应游戏中的X和游戏中Y的Y(因为他们不需要倾斜手机。)
我的问题是我该如何处理?我可以根据手机方向调整代码以反转X和Y方向,那么我如何以编程方式获取手机的当前方向?如果有更好的方式会很棒
希望有意义
编辑:
实际上可以安全地假设,如果设备长度大于其高度,屏幕将默认为横向?
答案 0 :(得分:2)
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int rotation = display.getRotation();
来自http://developer.android.com/reference/android/view/Display.html:
public int getRotation()
从“自然”方向返回屏幕的旋转。该 返回值可能是Surface.ROTATION_0(无旋转), Surface.ROTATION_90,Surface.ROTATION_180或Surface.ROTATION_270。 例如,如果设备具有自然高的屏幕,并且用户具有 把它转向侧面进入横向,价值 这里返回的可能是Surface.ROTATION_90或 Surface.ROTATION_270取决于它的转动方向。该 angle是屏幕上绘制图形的旋转,即 与设备物理旋转相反的方向。对于 例如,如果设备逆时针旋转90度,则为 补偿渲染将顺时针旋转90度 这里返回的值是Surface.ROTATION_90。
你必须试验这些设备,以确保android正确地知道“自然”方向。如果是这样,那么只需检查ROTATION_90(或ROTATION_270)以查看设备是否在它旁边。如果是,则切换x轴和y轴。
答案 1 :(得分:0)
这是NVidia提供的解决方案,可以很好地处理设备的默认方向: https://stackoverflow.com/a/14313663/1489493