1. 实现方法

    1. 内核层修改

kernel\msm-3.18\arch\arm\boot\dts\qcom\dsi-panel-lm215w-lvds-1080p-video.dtsi增加qcom,mdss-dsi-panel-orientation = "180";

从内核到进入系统旋转成功,但是存在一个问题,插入鼠标移动的时候蓝屏。初步测试晓龙相机预览方向是正常的,视频对讲、监控和app方向都正常

据观察,鼠标移动和显示的方向,没有相应对应起来

此方案大家如果大家知道怎么解决插入鼠标移动时显示蓝屏问题,麻烦告知,谢谢了。

下面是高通对我们这种解决方案的回复:

Your change is not suitable. The General solution is change SF init. diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cppindex c166aaa..526feb6 100644--- a/services/surfaceflinger/DisplayDevice.cpp+++ b/services/surfaceflinger/DisplayDevice.cpp@@ -134,6 +134,11 @@ DisplayDevice::DisplayDevice(property_get("persist.panel.orientation", property, "0");panelOrientation = atoi(property) / 90;+ mPanelInverseMounted = false;+ // Check if panel is inverse mounted (contents show up HV flipped)+ property_get("persist.panel.inversemounted", property, "0");+ mPanelInverseMounted = !!atoi(property);+// initialize the display orientation transform.setProjection(panelOrientation, mViewport, mFrame);}@@ -408,6 +413,11 @@ status_t DisplayDevice::orientationToTransfrom(default:return BAD_VALUE;}++ if (DISPLAY_PRIMARY == mHwcDisplayId && isPanelInverseMounted()) {+ flags = flags ^ Transform::ROT_180;+ }+tr->set(flags, w, h);return NO_ERROR;}

但找不到mPanelInverseMounted 和isPanelInverseMounted定义,不知道是基于哪个android版本的,经修改验证,效果是竖向的,而不是我们想要的横向。

  1. 2系统修改

    1. 2.1 Lk阶段显示的开机图片是旋转的

我们简单的处理方式是直接把图片倒过来,所以lk阶段不做代码上的旋转。

1.2.2 persist.panel.orientation=180

device\qcom\msm8937_64\system.prop下增加persist.panel.orientation=180

#bootanimation daemon会读取这个字符串进行旋转操作。

1.2.3 frameworks\base\cmds\bootanimation\BootAnimation.cpp

status_t BootAnimation::readyToRun()函数增加下面的内容

char value[PROPERTY_VALUE_MAX];property_get("persist.panel.orientation", value,"0");int orient= atoi(value) / 90;ALOGE("kandi BootAnimation::readyToRun111111,orient=%d\n",orient);  if(orient== 1 || orient == 3) {int temp = dinfo.h;dinfo.h= dinfo.w;dinfo.w= temp;}Rect destRect(dinfo.w, dinfo.h);mSession->setDisplayProjection(dtoken, orient, destRect, destRect);ALOGE("kandi BootAnimation::readyToRun22222222\n");

如果没有加这个,开机动画刚开始没有转过来,后面才转过来

1.2.4 frameworks\base\core\res\res\values\config.xml

!-- If true, enables auto-rotation features using the accelerometer.Otherwise, auto-rotation is disabled.  Applications may still requestto use specific orientations but the sensor is ignored and sensor-basedorientations are not available.  Furthermore, all auto-rotation relatedsettings are omitted from the system UI.  In certain situations we maystill use the accelerometer to determine the orientation, such as whendocked if the dock is configured to enable the accelerometer. --><bool name="config_supportAutoRotation">true</bool>Frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManagermSupportAutoRotation = mContext.getResources().getBoolean(com.android.internal.R.bool.config_supportAutoRotation);

改为false

<!-- The number of degrees to rotate the display when the keyboard is open.A value of -1 means no change in orientation by default. --><integer name="config_lidOpenRotation">-1</integer>

改为180

我们设备没有传感器,初步测试不需要修改这两个地方也能够达到显示旋转180度的效果。

1.2.5 frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

rotationForOrientationLw()函数修改

1.2.6 frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java

int mRotation = 2;//kandi change from 0 to 2 for rotate 180 by 2018.07.11public int getRotation() {return mRotation;}

mmm frameworks/base/services

make snod,然后烧录验证,当然对于userdebug版本可以用push方式。

rotationForOrientationLw()

mRotation

ROTATION_180

2

转过来

ROTATION0

0

没有转

ROTATION_180

0

开机动画后半段没有转过来,进入系统后转过来

摄像头没有转的,退出后,系统也没有转过来

ROTATION0

2

开机动画阶段有转过来,但是进入系统后没有转过来

1.2.7 晓龙相机apk属性修改

AndroidManifest.xml文件android:screenOrientation=“landscape”的值改为"unspecified"activity就会跟随系统方向了,否则系统旋转过来后,晓龙相机也没有相应的旋转过来。

1.2.8 recovery界面也需要相应的旋转的

主要再bootable/recovery/minui/graphics_fbdev.cpp中实现旋转

1.2.9 手机app从设备得到的摄像头图像是倒过来的(视频监控)

kernel\msm-3.18\arch\arm\boot\dts\qcom\msm8937-camera-sensor-qrd.dtsi

qcom,mount-angle = <270>;改为90没效果,重新改回270

接着修改下面:

vendor/qcom/proprietary/mm-camera/mm-camera2/media-controller/modules/sensors/configs/msm8937_camera.xml

<MountAngle>180</MountAngle>

我们项目的情况这里改为0,否则手机app得到的视频监控图像是倒过来的

编译mmm vendor/qcom/proprietary/mm-camera

升级包的方法:system\etc\camera\camera_config.xml

2 兼容性

通过基于device\qcom\msm8937_64\system.prop下persist.panel.orientation属性的值来兼容,此文件最终编译后汇总到system\build.prop文件中。

比如以

frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java的修改,根据persist.panel.orientation属性的值来做兼容

修改前:

public int getRotation() {

return mRotation;

}

修改后:

public int getRotation() {

String property = SystemProperties.get("persist.panel.orientation");

int rotation = (Integer.parseInt(property))/90;

Slog.i(TAG, "getRotation()--->property : " + property + "rotation:" +rotation);

mRotation = rotation;//2;

return mRotation;

}

3 升级包升级

涉及相关的部分

(1) build.prop

(2) system\etc\camera\camera_config.xml

(3) recovery.img

(4) splash.img

参考链接:

Android 7.1 竖屏转横屏全过程实现-基于高通平台

https://blog.csdn.net/eliot_shao/article/details/70766283

android不通过编译修改build.prop方法

https://blog.csdn.net/nbalichaoq/article/details/44241071

参考

高通平台android7.1系统显示旋转180度相关推荐

  1. 高通安卓Q显示屏不同角度旋转竖屏横屏切换

    由于项目需要,使用了竖屏当横屏用,所以需要将系统显示旋转90度,我们目前平台是基于高通QCM6125安卓10.0系统.为了方便以后其他角度的旋转,添加了persist.panel.orientatio ...

  2. 高通平台android kernel 开机logo显示和传统linux一样

     由于高通8k平台lk下只有2s多点 故直接在kernel显示logo,这篇文章转载过来制作linux logo,其实这个当时学习就会,只不过忘记了.在这里重提一下ubuntu下的GIMP图片工具 ...

  3. 高通平台android kernel 开机logo显示和传统linux一样 .

    由于高通8k平台lk下只有2s多点 故直接在kernel显示logo,这篇文章转载过来制作linux logo,其实这个当时学习就会,只不过忘记了.在这里重提一下ubuntu下的GIMP图片工具真的很 ...

  4. 华为鸿蒙os和小米ov,华为鸿蒙系统适配高通平台,小米OV是否跟进?网友:可能是魅族!...

    华为鸿蒙系统公测版正在火热升级中,官方宣布在6月初推出稳定版本,各类对比Android.iOS流畅度的视频不断流出,颇有出道即C位的味道. 从目前升级鸿蒙系统公测版用户反馈看,流畅度和稳定性大大超乎预 ...

  5. 高通平台sensor学习

    刚入行驱动时最先接触调试的外设模块便是sensor,一直都是零零散散的记录,这次终于下定决心对自己所学做一个系统的总结. sensor作为一款常用的外设,虽不起眼但是很多功能确实离不开它.比如我们手机 ...

  6. 高通平台 lcd driver 调试小结

    一.概述 1.1 简介 本文档主要包括LCD模块的驱动流程分析.Framebuffer相关知识.Gralloc等相关内容,以及LCD调试的一些经验和相关bug的分析和讲解. 1.2  开发环境 And ...

  7. 高通平台msm8953 Linux DTS(Device Tree Source)设备树详解之二(DTS设备树匹配过程)

    本系列导航: 高通平台8953  Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...

  8. 高通平台8953 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇)

    本系列导航: 高通平台8953  Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...

  9. 高通平台android开发总结

    http://www.cnblogs.com/yuzaipiaofei/archive/2012/07/24/4124179.html 1.高通平台android开发总结 1.1 搭建高通平台环境开发 ...

最新文章

  1. 几种常见自动化测试框架
  2. docker 启动命令_Jenkins视频课程在Docker环境下安装Jenkins,命令行如何启动Jenkins...
  3. Love = Accounting
  4. mySQL之单表更新
  5. decode encode
  6. SAP odata get metadata in QHD - still has cache logic
  7. 乐学python_【IT专家】铁乐学python
  8. 百度之星大赛启动,聚焦目标检测,总奖池11.2万!
  9. 我的docker随笔7:docker容器与主机之间文件拷贝
  10. 知识蒸馏在推荐精排中的应用与实践
  11. code第一部分数组:第十七题 爬楼梯问题
  12. C++前景如何,C++好学吗?
  13. loj #6013. 「网络流 24 题」负载平衡
  14. caffe 安装报错解决办法
  15. html添加省市县联动下拉框,JS实现省市县三级下拉联动
  16. 博士第一年,要把这些计算机基础课程学好(附教程)
  17. $refs 模拟点击
  18. 使用 TDD 测试驱动开发来构建 Laravel REST API 1
  19. 微信红包的随机算法是怎样实现的?
  20. macos使用ffpmeg批量mp4转mp3

热门文章

  1. java 集合接口原理_图文剖析java集合框架—Set接口
  2. android获取所有的子进程,Android M:如何获取所有进程UID?
  3. Tomcat的Classpath-常见问题以及如何解决
  4. 045_Collapse折叠面板
  5. 028_自己实现一个LinkedList
  6. 052_Function对象
  7. java 0000 0001 0002 000a 000b_同样的 Java 文件,为什么直接用 Javac 编译和使用 Maven 编译出来所得到的字节码不一样?...
  8. 悬停渐变特效html,CSS3 transition属性实现hover渐变动画效果
  9. sql server转mysql工具下载_SQL Server转换为MySQL工具推荐(Mss2sql)
  10. linux kill命令信号,linux kill命令详解