android hdmi模式横竖,rk3288 android6.0 hdmi显示横竖屏切换方法

rk3288 android6.0 hdmi显示横竖屏切换方法

android hdmi显示横竖屏主要是通过persist.demo.hdmirotation和ro.sf.hwrotation这两个

属性值来控制的 。其中 persist.demo.hdmirotation这个属性值是rockchip平台添加的属性值。

persist.demo.hdmirotation可以赋值portrait(竖屏)或landscape(横屏)

如果persist.demo.hdmirotation=portrait,则ro.sf.hwrotation可以 取值 90或270

如果persist.demo.hdmirotation=landscape,则ro.sf.hwrotation可以 取值 0或180

这部分控制逻辑代码在:frameworks/base/services/core/java/com/android/server/display/LocalDisplayAdapter.java文件的getDisplayDeviceInfoLocked()函数中。

另外persist.demo.hdmirotation需要结合persist.display.portrait使用,ro.sf.hwrotation default为0,不需要改变,实际上改变的是persist.display.portrait

frameworks/base/services/core/java/com/android/server/display/LocalDisplayAdapter.java

final class LocalDisplayAdapter extends DisplayAdapter {

} else {

mInfo.type = Display.TYPE_HDMI;

mInfo.flags |= DisplayDeviceInfo.FLAG_PRESENTATION;

+boolean noRotate = "0".equals(SystemProperties.get("ro.sf.hwrotation"));

+if(noRotate && mBuiltInDisplayId == SurfaceControl.BUILT_IN_DISPLAY_ID_HDMI){

+if (SystemProperties.getBoolean("ro.rotation.external", false)) {

+mInfo.flags |= DisplayDeviceInfo.FLAG_ROTATES_WITH_CONTENT;

+ }

+ String value = SystemProperties.get("ro.orientation.einit");

+if ("0".equals(value)) {

+ mInfo.rotation = Surface.ROTATION_0;

+} else if ("90".equals(value)) {

+mInfo.rotation = Surface.ROTATION_90;

+} else if ("180".equals(value)) {

+mInfo.rotation = Surface.ROTATION_180;

+} else if ("270".equals(value)) {

+mInfo.rotation = Surface.ROTATION_270;

+}

+}

mInfo.name = getContext().getResources().getString(

frameworks/native/services/surfaceflinger/DisplayDevice.cpp

void DisplayDevice::setProjection(int orientation,

mClientOrientation = orientation;

orientation = (mHardwareOrientation + orientation) % 4;

}

+ if (mType == DisplayDevice::DISPLAY_EXTERNAL) {

+ mClientOrientation = orientation;

+ if (orientation %2 == 1)

+ frame = Rect(0,0,getHeight(),getWidth());

+ }

device/rockchip/rk3288/system.prop

+ro.same.orientation=true

+ro.rotation.external=true

+ro.orientation.einit=90

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值