系统实现屏幕横竖屏切换

需求场景

机器默认横屏或者竖屏显示 -强制横竖屏显示

实现思路

  • 旋转 uboot logo 和内核 logo
  • 旋转 Android 桌面
  • 旋转触摸

这个很好理解:

  • uboot 内核 开机动画都是有界面的,旋转改变方向,同时提供新的横屏或者竖屏logo
  • 旋转桌面,就是理解的竖屏改为横屏或者横屏改为竖屏
  • 旋转触摸,触摸屏是带驱动的,触摸和显示本身是两个东西,所以旋转触摸。 这样才能实现 触摸到你当前触摸的位置

需求实现

RK实现方案

以RK3568 MIPI屏幕为例,假设当前已经设置了屏幕,用的是哪一款屏幕,配置文件更改宏定义

rk_android11.0_sdk/kernel/arch/arm64/boot/dts/rockchip/topeet_screen_choose.dtsi

旋转uboot logo 和内核 logo

修改设备树文件

rk_android11.0_sdk/kernel/arch/arm64/boot/dts/rockchip/topeet_rk3568_lcds.dtsi

如果配套的屏幕是 LVDS 7 寸屏幕或者 LVDS10.1 寸 1024*600 屏幕或者 LVDS10.1 寸

1280*800 屏幕,修改如下所示,配置文件有根据不同分辨率和修改,找到对应位置修改

&route_lvds{
status = "okay";
logo,rotate = <1>;
connect = <&vp2_out_lvds>;
};
其中:
logo,rotate = <1>;代表逆时针旋转 90 度,
logo,rotate = <2>;代表逆时针旋转 180 度,
logo,rotate = <3>;代表逆时针旋转 270 度,
logo,rotate = <0>;代表逆时针旋转 360 度。

旋转 Android 系统

修改 Android11 源码的文件,

rk_android11.0_sdk/device/rockchip/common/BoardConfig.mk

修改主屏显示的方向,角度可根据显示需求,自定义修改 0/90/180/270 0:横屏,90:竖屏,
180:反向横屏,270:反向竖屏。作者想要将物理竖屏修改为横屏显示,所以旋转角度为 90度。修改如下所示:

SF_PRIMARY_DISPLAY_ORIENTATION := 90

修改 recovery 显示旋转,修改 文件

rk_android11.0_sdk/device/rockchip/common/BoardConfig.mk

如下所示:

TARGET_RECOVERY_DEFAULT_ROTATION ?= ROTATION_RIGHT

修改完,保存退出,重新编译 android 源码,烧写镜像后发现系统启动以后桌面是横屏显
示,但是触摸还是竖屏

旋转触摸

迅为支持的屏幕有 LVDS 7 寸屏幕,LVDS10.1 寸 1280800 屏幕,LVDS10.1 寸 1024600
屏幕,MIPI 7 寸屏幕
LVDS 7 寸屏幕 和 MIPI 7 寸屏幕使用的触摸芯片是 ft5x06。LVDS10.1 寸 1280800 屏幕
和 LVDS10.1 寸 1024
600 屏幕的触

触摸芯片是 ft5x06 的屏幕,修改设备树中的触摸

rk_android11.0_sdk/kernel/arch/arm64/boot/dts/rockchip/topeet_rk3568_lcds.dtsi 

节点,增加红色的代码,如下所示:
在这里插入图片描述
触摸芯片是 gt911 的屏幕,修改设备树中的

rk_android11.0_sdk/kernel/arch/arm64/boot/dts/rockchip/topeet_rk3568_lcds.dtsi 

触摸节点,增加红色的代码,如下所示:
在这里插入图片描述

MTK实现方案

以MTK6769 方案实现,给一定的参考

修改文件如下

\device\mediateksample\k69v1_64_k419\ProjectConfig.mk 
\kernel-4.19\arch\arm64\configs\k69v1_64_k419_defconfig.xml 
\vendor\mediatek\proprietary\bootable\bootloader\lk\project\k69v1_64_k419.mk 

device 下面的是旋转系统
kernel 下面的是旋转kernel
vendor 下面的是旋转uboot

ProjectConfig.mk  文件中修改:
MTK_LCM_PHYSICAL_ROTATION = 180  0180 是横屏; 90270 是竖屏 修改k69v1_64_k419_defconfig.xml   文件中修改:CONFIG_MTK_LCM_PHYSICAL_ROTATION="180"0180 是横屏; 90270 是竖屏 修改k69v1_64_k419.mk  文件修改:
MTK_LCM_PHYSICAL_ROTATION = 180 0180 是横屏; 90270 是竖屏 修改

拓展

RK和MTK 修改的方式完全不一样? 这个这里总结一下:

  • RK 和 MTK 在 kernel/uboot/安卓物理旋转 用的其实都是 旋转方案,更改宏定义
  • RK的触摸旋转,修改了设备树方案。
  • 为什么MTK当前这款产品,触摸没有去修改设备树,
    因为当前修改方案根本没有修改过触摸方向。也就是说:同一台机器,RK按照上述修改横竖屏切换后触摸方向一致的。但是MTK 根本没有去更改触摸屏方向,只是更改了旋转。 当前自己接触的产品,触摸屏方向是不对外输出提供的,也就是说不允许更改触摸屏触摸方向。方向是死的。触摸屏
    在定义的时候,就给了触摸方向,不可更改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/61300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】机器学习的基本分类-监督学习-逻辑回归-Sigmoid 函数

Sigmoid 函数是一种常用的激活函数&#xff0c;尤其在神经网络和逻辑回归中扮演重要角色。它将输入的实数映射到区间 (0, 1)&#xff0c;形状类似于字母 "S"。 1. 定义与公式 Sigmoid 函数的公式为&#xff1a; 特点 输出范围&#xff1a;(0, 1)&#xff0c;适合用…

eBay 基于 Celeborn RESTful API 进行自动化工具集成实践

作者&#xff1a;王斐&#xff0c;ebay Hadoop 团队软件工程师&#xff0c;Apache Kyuubi PMC member&#xff0c;Apache Celeborn Committer。 简介&#xff1a;Apache Celeborn 是一个统一的大数据中间服务&#xff0c;致力于提高不同MapReduce引擎的效率和弹性。为了Spark …

Python 和 Pyecharts 对Taptap相关数据可视化分析

结果展示&#xff1a; 数据来源&#xff1a; Python爬取TapTap 热门游戏信息并存储到数据库&#xff08;详细版&#xff09; 目录 结果展示&#xff1a; 数据来源&#xff1a; Python爬取TapTap 热门游戏信息并存储到数据库&#xff08;详细版 一、引言 二、准备工作 三、…

【Linux】常见指令 + 权限概念

文章目录 一、重要的指令mkdir指令rmdir指令 && rm 指令man指令cp指令mv指令less指令find指令tar指令 二、关于Linux中的权限文件访问者的分类&#xff08;人&#xff09;文件类型和访问权限&#xff08;事物属性&#xff09;文件权限值的表示方法文件访问权限的相关设…

老旧前端项目如何升级工程化的项目

因为历史的原因存在着大量的老旧前端项目&#xff0c;而在今天的开发环境中已经不再适应了&#xff0c;于是产生了升级到新的环境的需求。比如笔者当前的一个登录页面项目&#xff0c;就是以下面为技术栈的老旧项目。 基于 jQuery包管理基于 require.js&#xff0c;甚至有的没…

在国外,使用中国移动app办理停机保号

1.人在国内的时候&#xff0c;先使用手机下载中国移动app 以前网上营业厅是可以直接办理停机保号的&#xff0c;现在不可以了 2.人在国内的时候&#xff0c;确保自己的手机能够登录中国移动app 这个步骤保证回国前可以使用中国移动app复机 3.人在国内的时候&#xff0c;拨打…

C# 解决【托管调试助手 “ContextSwitchDeadlock“:……】问题

文章目录 一、遇到问题二、解决办法 一、遇到问题 托管调试助手 “ContextSwitchDeadlock”:“CLR 无法从 COM 上下文 0x56e81e70 转换为 COM 上下文 0x56e81d48&#xff0c;这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows …

Vscode阅读C/C++ Code实用教程

目录 1.必备插件2.创建工程3.重要的快捷键及使用 1.必备插件 C/C IntelliSense - 用于跳转GitLens — Git supercharged -用于查看git 提交记录Remote - SSH -用于连接linux服务器 2.创建工程 创建工程还是蛮重要的&#xff0c;虽然不创建同样可以看Code&#xff0c;创建工程…

OGRE 3D----4. OGRE和QML共享opengl上下文

在现代图形应用开发中,OGRE(Object-Oriented Graphics Rendering Engine)和QML(Qt Modeling Language)都是非常流行的工具。OGRE提供了强大的3D渲染能力,而QML则用于构建灵活的用户界面。在某些应用场景中,我们需要在同一个应用程序中同时使用OGRE和QML,并且共享OpenGL…

C语言进阶7:程序环境与预处理

本章重点 程序的翻译环境程序的执行环境详解&#xff1a;C语言程序的编译 链接预定义符号介绍预处理指令 #define宏和函数的对比预处理操作符#和##的介绍命令定义预处理指令 #include预处理指令 #undef条件编译 1.程序的翻译环境和执行环境 在ANSIC的任何一种实现中&#x…

.net的winfrom程序 窗体透明打开窗体时出现在屏幕右上角

窗体透明&#xff0c; 将Form的属性Opacity&#xff0c;由默认的100% 调整到 80%&#xff0c;这个数字越小越透明(尽量别低于50%&#xff0c;不信你试试看)&#xff01; 打开窗体时出现在屏幕右上角 //构造函数 public frmCalendarList() {InitializeComponent();//打开窗体&…

【Java基础入门篇】三、面向对象和JVM底层分析(3)

Java基础入门篇 三、面向对象和JVM底层分析 3.5 抽象类/接口和外/内部类 &#xff08;1&#xff09;抽象类 **“抽象方法”**是使用abstract修饰的方法&#xff0c;没有方法体&#xff0c;只有声明&#xff0c;定义的是一种“规范”&#xff0c;就是告诉子类必须要给抽象方法…

快速理解倒排索引在ElasticSearch中的作用

一.基础概念 定义&#xff1a; 倒排索引是一种数据结构&#xff0c;用来加速文本数据的搜索和检索&#xff0c;和传统的索引方式不同&#xff0c;倒排索引会被每个词汇项与包含该词汇项的文档关联起来&#xff0c;从而去实现快速的全文检索。 举例&#xff1a; 在传统的全文…

AI开发 - GPT之魂 用Python 演示chatGPT的自注意力机制 - 机器学习

自注意力机制&#xff08;Self-Attention&#xff09;就是让模型在处理每个词时&#xff0c;学会“关注重点”&#xff0c;而不是平均地对每个词一视同仁。这种机制让 GPT 能更聪明地理解句子的上下文和语义之间的关系。 自注意力机制是 GPT 的核心&#xff0c;它帮助模型在理解…

将自定义 AWS S3 快照存储库连接到 Elastic Cloud

作者&#xff1a;来自 Elastic Annie Hansen, Stef Nestor 在本博客中&#xff0c;我们将介绍如何通过 Elasticsearch 的快照将我们已提交的集群数据备份到 AWS S3 存储桶中。在 Elastic Cloud&#xff08;企业版&#xff09;中&#xff0c;Elastic 在其 found-snapshots 存储…

linux下Qt程序部署教程

文章目录 [toc]1、概述2、静态编译安装Qt1.1 安装依赖1.2 静态编译1.3 报错1.4 添加环境变量1.5 下载安装QtCreator 3、配置linuxdeployqt环境1.1 在线安装依赖1.2 使用linuxdeployqt提供的程序1.3 编译安装linuxdeployqt 4、使用linuxdeployqt打包依赖1.1 linuxdeployqt使用选…

【QT】控件8

1.QDial 通过调节旋钮位置来控制窗口的不透明度&#xff1a; void Widget::on_dial_valueChanged(int value) {qDebug()<<value;this->setWindowOpacity((double)value/100); }效果演示&#xff1a; 2.Date/Time Edit 计算两个日期的差值 ui界面设计 计算按钮按下…

CGAL CGAL::Polygon_mesh_processing::self_intersections解析

CGAL::Polygon_mesh_processing::self_intersections 是用于检测多边形网格&#xff08;Polygon Mesh&#xff09;中的自相交的函数。自相交是指网格中的某些面&#xff08;例如三角形&#xff09;与同一网格中的其他面交叉的情况。这种情况通常是不期望的&#xff0c;因为它会…

[巅峰极客 2021]签到

[巅峰极客 2021]签到 给了我们好多表情&#xff0c;真的是一脸懵逼 注意给我们的关键词 GAME 现在还不知道是什么意思我们去试着解开一下 用这个emoji表情解密器&#xff0c;这里我找了好久才找到一个 emoji-aes 这里的Key值就是GAME 运行后出现flag NSSCTF{10ve_4nd_Peace…