本文主要是介绍android 平板固定横屏,Android9.0 MTK 平板横屏方案修改,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
拆解步骤
1、app强制横屏显现,无视android:screenOrientation=”portrait”属性
2、屏幕接触坐标修正为横屏
3、开机动画横屏
4、开机logo、关机充电动画横屏
5、RecoveryUI横屏
上代码
1、app强制横屏显现
修正rotationForOrientationLw(),默许回来270
frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.java
@OverridepublicintrotationForOrientationLw(intorientation,intlastRotation,booleandefaultDisplay){
….synchronized(mLock){
…default://ForUSER,UNSPECIFIED,NOSENSOR,SENSORandFULL_SENSOR,//justreturnthepreferredorientationwealreadycalculated.if(preferredRotation>=0){returnpreferredRotation;
}//returnSurface.ROTATION_0;returnSurface.ROTATION_270;//cczhengaddforlandscap}
}
}
activity默许强制属性为SCREEN_ORIENTATION_LANDSCAPE
frameworks\base\services\core\java\com\android\server\wm\WindowManagerService.java
booleanupdateOrientationFromAppTokensLocked(intdisplayId,booleanforceUpdate){longident=Binder.clearCallingIdentity();try{finalDisplayContentdc=mRoot.getDisplayContent(displayId);//finalintreq=dc.getOrientation();intreq=android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;//cczhengaddforlandscapif(req!=dc.getLastOrientation()||forceUpdate){if(DEBUG_ORIENTATION){
Slog.v(TAG,”updateOrientation:req=”+req+”,mLastOrientation=”+dc.getLastOrientation(),newThrowable(“updateOrientation”));
}
dc.setLastOrientation(req);//sendamessagetoPolicyindicatingorientationchangetotake//actionlikedisabling/enablingsensorsetc.,//TODO(multi-display):Implementpolicyforsecondarydisplays.if(dc.isDefaultDisplay){
mPolicy.setCurrentOrientationLw(req);
}returndc.updateRotationUnchecked(forceUpdate);
}returnfalse;
}finally{
Binder.restoreCallingIdentity(ident);
}
}
DisPlayContent显现mRotation默许改为3(270)
frameworks\base\services\core\java\com\android\server\wm\DisplayContent.java
/**
*Currentrotationofthedisplay.
*Constantsasper{@linkandroid.view.Surface.Rotation}.
*
*@see#updateRotationUnchecked()
*///privateintmRotation=0;privateintmRotation&
这篇关于android 平板固定横屏,Android9.0 MTK 平板横屏方案修改的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!