Android加速计问题

时间:2011-08-17 14:10:55

标签: android accelerometer

我的游戏使用加速度计,一切正常但我注意到某些手机会出现轻微问题。游戏强制定位为风景,但有些手机具有默认的横向屏幕方向...

现在我总是假设用户不得不倾斜他们的手机以正确看到游戏,这意味着X轴的加速度计读数会将玩家移动到Y,而Y读数会移动玩家在X中。对于具有默认横向屏幕的手机,X将对应游戏中的X和游戏中Y的Y(因为他们不需要倾斜手机。)

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

希望有意义

编辑:

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

2 个答案:

答案 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