Android的启动默认是横屏或者竖屏
我们的TV本来是横屏显示,但是有客户竟然要竖屏显示,昨天快下班收到的需求,竟然说7.19就要搞定。思路有2个,一个就是修改LCD的默认输出,但是这个不是我这个水平能轻而易举搞定的。另外一个就是底层应该给上层porting出接口。像这种系统性的接口一般在build.prop里。找到一个相关度比较大的属性ro.sf.hwrotation=270,和旋转有关的,联想到0,90,180,270.试试吧,将其改为ro.sf.hwrotation=0,测试了一下,OK,满足客户要求了,就早点下班了。/ device/samsung/smdk4x12/system.prop(ro.sf.hwrotation )今天来了搜了一下相关的内容,还是发现了不少知识1,可以在init.rc里指定系统是横屏还是竖屏[普通]
-
对应setProp ro.sf.hwrotation 0指定默认输出不旋转(我们默认输出时竖屏)
-
#对应setProp ro.sf.hwrotation 270指定旋转270度输出
在方法
[CPP]
-
无效 GraphicPlane :: setDisplayHardware(DisplayHardware * HW)里加
-
案例 180:
-
displayOrientation = ISurfaceComposer :: eOrientation180;
-
打破;
这样子就支持了180度了
3,还有更详细的 - 安卓4.1默认窗体旋转180度 1)设置属性值在系统/ build.prop文件中加入ro.sf.hwrotation = 1802)设置窗体默认显示方向在框架/本地/服务/的surfaceflinger / SurfaceFlinger.cpp文件中找到方法setDisplayHardware在交换机中加入[CPP]
-
案例 180:
-
displayOrientation = ISurfaceComposer :: eOrientation180;
-
打破;
[CPP]
-
/ **
-
* @隐藏
-
* /
-
公共 静态 诠释 getDefaultRotation(){
-
返回 android.os.SystemProperties.getInt(“ro.sf.hwrotation” ,0); / / 180
-
}
-
-
-
/ **
-
* @隐藏
-
* /
-
公共 静态 诠释 getDefaultRotationIndex(){
-
整型 旋转= getDefaultRotation();
-
开关(旋转){
-
情况下 0:
-
返回 ROTATION_0;
-
案例 90:
-
返回 ROTATION_90;
-
案例 180:
-
返回 ROTATION_180;
-
案例 270:
-
返回 ROTATION_270;
-
}
-
返回 ROTATION_0;
-
}
[CPP]
-
公共 无效 updateVoluesFromResources(){
-
........................................................
-
mThumbnailHeight = Math.round(res.getDimension(R.dimen.status_bar_recents_thumbnail_height)); / /添加
-
}
[Java]中
-
私人 无效 updateThumbnail(...){
-
-
否则 {
-
矩阵scaleMatrix = 新的 矩阵();
-
浮 规模= mThumbnailWidth /(浮动)thumbnail.getWidth();
-
scaleMatrix.postScale(刻度,刻度); / / setScale
-
h.thumbnailViewImage.setScaleType(ScaleType.MATRIX);
-
h.thumbnailViewImage.setImageMatrix(scaleMatrix);
-
/ /添加
-
如果(Surface.getDefaultRotation()> 0 ){
-
矩阵rotateMatrix = 新的 矩阵();
-
rotateMatrix.setRotate(Surface.getDefaultRotation(),mThumbnailWidth / 2 ,mThumbnailHeight / 2 );
-
h.thumbnailViewImage.setImageMatrix(rotateMatrix);
-
}
-
/ /添加结束
-
}
5)。修改截屏图片方向
在框架/底座/ pacikages / systemui / SRC / COM /机器人/ systemui / GlobalScreenshot.java文件中找到takeScreenshot方法修改浮度= getDegreesForRotation(mDisplay.getRotation());为[Java]中
-
整型 旋转= mDisplay.getRotation();
-
如果(Surface.getDefaultRotation()> 0 ){
-
=旋转(旋转+ Surface.getDefaultRotationIndex())%4 ;
-
}
-
浮 度= getDegreesForRotation(旋转);
确定这样就完成屏幕旋转180度