2011-08-17 95 views
1

我的游戏使用加速度计,一切正常,但我注意到有些手机会出现轻微问题。本场比赛迫使方向是横向,但有些手机拥有景观的默认屏幕方向......Android加速度计问题

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

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

希望是有道理的

编辑:

其实会是安全的假设,如果设备的长度大于高度的屏幕将被默认景观?

回答

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

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

公众诠释getRotation()

返回从 “自然” 屏幕方向旋转。返回值可以是Surface.ROTATION_0(不旋转), Surface.ROTATION_90,Surface.ROTATION_180或Surface.ROTATION_270。 例如,如果设备具有自然高大的屏幕,并且用户将其翻转以进入横向,则此处返回的值 可以是Surface.ROTATION_90或 Surface.ROTATION_270,具体取决于方向它被转动了。角度是屏幕上画出的图形的旋转角度,即与设备物理旋转方向相反的方向。对于 例如,如果该装置被旋转90度逆时针,以补偿 渲染将由顺时针和由此 90度这里的返回值将是Surface.ROTATION_90旋转。

您必须试验一下设备,以确保android能够正确地知道“自然”方向。如果是这样,那么只需检查ROTATION_90(或ROTATION_270)以查看设备是否在旁边。如果是,则切换x和y轴。

+0

我做了尝试,但它总是返回0不管手机是什么样的方式? – Chris

+0

“旋转”值是否取决于屏幕当前所在的旋转角度或我的应用强制旋转的旋转值?看起来,当我旋转手机这个值不会改变,但它不同于一个“自然”景观手机比较肖像之一 – Chris