2013-01-31 104 views
4

getRotation總是返回零,無論屏幕面向哪個方向。我在運行2.3的真實設備上運行它。任何理由?getRotation總是返回零

Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
int rotation = display.getRotation(); 
+0

你使用什麼設備? –

+0

華爲Y200。我相信它必須工作,因爲默認的相機應用程序能夠找出什麼是。 – AndroidDev

+0

我正在努力解決同樣的問題,不知道爲什麼getRotation()總是返回0.有沒有人想出解決方案?如果設備的自動旋轉關閉(或者即使打開),每次調用getRotation()函數(使用HTC One M8)時,我都會得到0。 – Cat

回答

6

getRotation只有在應用程序具有UI並且允許UI旋轉時才能使用。存在用於操作系統,可以防止任何的應用程序從自動旋轉設定:

設置>顯示>自動旋轉屏幕

這具有被啓用。在我的設備上,它被禁用。儘管如此,getRotation上的Android文檔不僅無法指出這一點,而且甚至假設即使沒有UI,getRotation也會返回旋轉。你需要一個用戶界面。這對於像沒有UI那樣的服務來說當然是個問題,但是爲了與用戶交互無關的目的,需要知道設備的方向。就個人而言,我不斷受到Google的憤怒,因爲他們僱傭了業餘程序員,他們認爲訪問硬件功能幾乎總是需要某種UI。這種問題在許多場合都出現了,比如必須有SurfaceView才能錄製視頻。

最後,應用程序顯然不需要getRotation來確定設備是旋轉0,90,180還是270度。在自動旋轉屏幕關閉的情況下,默認相機應用程序仍然能夠計算角度旋轉,因此它不能來自getRotation,除非它以某種方式能夠打開自動旋轉屏幕設置。

+0

那麼你的解決方案是什麼? – 2017-01-19 03:01:53