2011-08-17 136 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