由於硬件問題,我們必須將我們開發的Android平板電腦上下180度安裝。我們設法翻轉屏幕回來做以下修改,以正確的方向:Android屏幕旋轉前180度旋轉以正確定向
「框架/基/服務/ SurfaceFlinger的/ SurfaceFlinger.cpp」
無效GraphicPlane :: setDisplayHardware(DisplayHardware * HW) 。 。 displayOrientation = ISurfaceComposer :: eOrientation90; 休息; + case 180: + displayOrientation = ISurfaceComposer :: eOrientation180; // cdh + break; 情況270: displayOrientation = ISurfaceComposer :: eOrientation270; 休息;
「系統/核心/ ROOTDIR/init.rc」
# Set this property so surfaceflinger is not started by system_init
setprop system_init.startsurfaceflinger 0
+#cdh
+ setprop ro.sf.hwrotation 180
class_start core
class_start main
一切看起來不錯,但不知何故,屏幕將顯示旋轉過程中的正確方向前翻轉180度。該平板電腦使用陀螺儀和加速計傳感器在Android ICS上運行。
我試着從「frameworks/base/core/jave/android/view/WindowOrientationListener.java」檢查Window Orientation Listener日誌,並確保旋轉過程中的方向是正確的。
我對傳感器軸方向做了一些改變(在傳感器驅動器上),但不知怎的,這並沒有幫助。任何可以幫助解決這個問題的建議?
欣賞所有評論。
感謝, MM
謝謝你的建議。我設法通過交換矩陣旋轉(0 <-> 180; 90 <-> 270)在frameworks/base/services/java/com/android/server/wm/ScreenRotationAnimation.java文件的createRotationMatrix()旋轉開關案例中。屏幕現在可以正確順利旋轉。 – user1662499