HiSilicon352 android9.0 系统显示方向旋转与截屏问题分析

一,系统显示方向

1. 概述

Android的旋转显示,主要运用于广告机。Android的旋转,包括图形UI的旋转、鼠标和遥控器的旋转及媒体旋转。
下图为竖屏UI的绘制坐标系和显示坐标系。
在这里插入图片描述

2. 功能说明

方案依据Android原生的旋转原理设计,在Android启动时,根据设置旋转配置项,来设置旋转的方向和宽高比信息,Android原生旋转系统根据这两个值,更新对应的display等信息,达到旋转的目的。

App在竖屏绘制时,使用竖屏的layout和资源,按上图的左边的坐标系;显示时,根据更新后的旋转方向和display等信息计算出Device的tr变换矩阵,根据变换矩阵进行坐标系变换,将多层layer叠加到屏幕上显示。

3. 属性设置

属性配置项,如下:

setprop persist.prop.screenorientation landscape ---------0度
setprop persist.prop.screenorientation portrait ---------90度
setprop persist.prop.screenorientation seascape ---------180度
setprop persist.prop.screenorientation upsideDown --------270度

在串口设置后, 切换UI界面(比如退出当前Activity或者进入其它Activity)后会立即生效,并且在重启依然生效,版本默认为0度横屏

4. 调试

  1. 配置项的设置问题
    在串口配置旋转项后,需要sync一下,以免配置未保存到单板。

  2. 如何设置系统默认方向

源码路径:device/hisilicon/Hi3751V350/device.mk# rotation, default landscape
# default rotation , 0=landscape, 90=portrait, 180=seascape, 270=upsideDown
PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \persist.prop.screenorientation=landscape

二,截屏

1. 概述

Android上层APP通过SurfaceControl类的screenshot接口可以获取导致当前屏幕上显示内容的bitmap数据,即截屏功能。Android原生已有该接口,但是当前的海思平台上私有的视频输出到视频层、图形输出到图形层架构,Android原生截屏流程仅能获取到图形层数据,也就是说播放视频时进行截屏无法获取到视频数据,没有做到“所见即所得”。

针对上述问题,海思方案做了不同的实现支持视频数据截屏,即“所见即所得”,称之为私有截屏方案

在这里插入图片描述

2. 功能说明

私有截屏方案功能如下:
1. 屏幕上全部为图形层信息时,可以正确截取屏幕信息
2. 屏幕上全部为视频层信息时,可以正确截取屏幕信息
3. 屏幕上为图形和视频混合信息时,可以正确截取屏幕信息
4. 屏幕上为多路视频PIP混合信息时,可以正确截取屏幕信息

注:
1> 可通过prop配置来切换Android原生方案与私有截屏方案。
2> 私有截屏不支持Z序截屏、图形视频混合信息时的纯视频层截屏。
3> 私有截屏支持debug信息打印可以获取外部接口返回值,入参等信息。

3. 属性设置

当视频播放时,Android自动切换到私有截屏通路进行截屏,而没有视频播放时,可以通过属性persist.sys.screencap.mode进行控制截屏的行为,该属性值默认是1,表示走Android原生的纯图形层截屏。persist.sys.screencap.mode为2时表示走私有截屏。

setprop persist.sys.screencap.mode 1 ----------Android原生的纯图形层截屏setprop persist.sys.screencap.mode 2 ----------私有截屏

4. 调试

  1. 配置项设置问题。
    在串口执行setprop persist.sys.screencap.mode 2私有截屏即刻生效。
  2. 如何默认设置为私有截屏。
源码路径:device/hisilicon/Hi3751V350/device.mk# 1 = Android原生的纯图形层截屏, 2 = 私有截屏
PRODUCT_PROPERTY_OVERRIDES += persist.sys.screencap.mode=2
  1. 在persit文件中直接在/data/property中增加。
    支持screencap调试命令,配置私有截屏后可以通过screencap正常截取屏幕上显示的内容。

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

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

相关文章

使用tomcat里的API - servlet

一、创建一个新的Maven空项目 首次创建maven项目的时候,会自动从maven网站上下载一些依赖组件(这个过程需要保证网络稳定,否则后续打包一些操作会出现一些问题) ps:校园网可能会屏蔽一些网站,可能会导致maven的依赖…

Chat2DB

序言 日常开发中,我们可能会用到MyBatis Generator自动生成Entity实体类、DAO接口以及对应的Mapper文件可以减少一部分的冗余代码开发量,随着AI的发展,可以将自然语言转换为SQL语句,例如ChatSQL、阿里的Chat2DB等。 Chat2DB简介…

git Failed to connect to 你的网址 port 8282: Timed out

git Failed to connect to 你的网址 port 8282: Timed out 出现这个问题的原因是:原来的仓库换了网址,原版网址不可用了。 解决方法如下: 方法一:查看git用户配置是否有如下配置 http.proxyhttp://xxx https.proxyhttp://xxx如果…

数据库体系概述:详述其基本概念、多样分类、关键作用及核心特性

数据库是一个用于存储、管理和检索数据的系统,它按照特定的数据结构和模式组织数据,确保数据的一致性、安全性和高效访问。以下是关于数据库的详细介绍: 介绍: 数据库(Database, DB)是一个长期存储在计算…

算法汇总啊

一些常用算法汇总 算法思想-----数据结构动态规划(DP)0.题目特点1.【重点】经典例题(简单一维dp)1.斐波那契数列2.矩形覆盖3.跳台阶4.变态跳台阶 2.我的日常练习汇总(DP)1.蓝桥真题-----路径 算法思想-----数据结构 数据结构的存储方式 : 顺序存储(数组) , 链式存储…

RTX RTOS操作实例分析之---邮箱(mailbox)

0 Preface/Foreword 1 邮箱(mailbox) 1.1 mailbox ID定义 static osMailQId app_mailbox NULL; 1.2 定义mailbox结构体变量 #define osMailQDef(name, queue_sz, type) \ static void *os_mail_p_##name[2]; \ const char mail_##name[] #name; \ con…

conda创建虚拟环境太慢,Collecting package metadata (current_repodata.json): failed

(省流版:只看加粗红色,末尾也有哦) 平时不怎么用conda,在前公司用服务器的时候用的是公司的conda源,在自己电脑上直接用python创建虚拟环境完事儿,所以对conda的配置并不熟悉~~【狗头】。但是python虚拟环境的最大缺点…

U盘属性0字节,数据恢复全攻略

U盘,这个我们日常生活中常用的数据存储工具,有时却会突然显示出“属性0字节”的诡异状况。面对这种突如其来的故障,许多用户都感到束手无策,甚至误以为数据已经彻底丢失。那么,U盘属性0字节究竟是怎么回事?…

OpenCV 使用freetype在图像上写中文

​​​​​​ #include "opencv2/opencv.hpp" #include "opencv2/freetype.hpp"static cv::Ptr<cv::freetype::FreeType2> getFreeType() {static cv::Ptr<cv::freetype::FreeType2> ft2;if (ft2.empty()){ft2 cv::freetype::createFreeType…

小红书商业IP变现策略与实操经验分享

一、个人介绍与背景 1. 创业者背景 作为连续创业者&#xff0c;我创立了树叶有光品牌&#xff0c;并在多个领域有所涉猎&#xff0c;如人生陪跑师、财富卡点爆破师等。这些多重身份让我在创业过程中积累了丰富的经验和独特的视角。 二、小红书账号运营经验 1. 运营成果 经…

Ubuntu 22.04安装新硬盘并启动时自动挂载

方法一 要在Ubuntu 22.04系统中安装一个新硬盘、对其进行格式化并实现启动时自动挂载&#xff0c;需要按以下步骤操作&#xff1a; 1. 安装硬盘 - 确保你的硬盘正确连接到计算机上&#xff08;涉及硬件安装&#xff09;。 2. 发现新硬盘 - 在系统启动后&#xff0c;打开终端…

30天拿下Rust之实战Web Server

概述 随着互联网技术的飞速发展&#xff0c;Web服务器作为承载网站与应用的核心组件&#xff0c;其性能、稳定性和安全性都显得至关重要。Rust语言凭借其独特的内存安全保证、高效的性能以及丰富的生态系统&#xff0c;成为了构建现代Web服务器的理想选择。 新建项目 首先&…

适合户外运动的开放式耳机选哪款?五款开放式耳机推荐

开放式蓝牙耳机由于其开放式设计&#xff0c;适合在户外运动、工作场所等需要保持警觉的场合使用。在户外活动中&#xff0c;能够听到周围环境的声音对于安全和警惕性非常重要。同时&#xff0c;这种耳机在运动或工作时不容易产生不适感&#xff0c;也不会阻碍佩戴者与他人的交…

高等数学基础篇(数二)之二重积分(解析版)

二重积分&#xff1a; 一、二重积分的概念及性质 1.二重积分的概念 2.二重积分的性质 二、二重积分的计算 1.利用直角坐标计算 2.利用极坐标计算 3.利用函数的奇偶性计算 4.利用变量的轮换对称性计算 目录 一、二重积分的概念及性质 1.二重积分的概念 2.二重积分的性…

ubuntu 23 安装maven

要在 Ubuntu 23 系统上安装 Maven&#xff0c;请遵循以下步骤&#xff1a; **1. ** 确保已安装 Java Development Kit (JDK): Maven 需要 Java 环境才能运行。确认您的系统已经安装了 JDK 8 或更高版本。如果尚未安装&#xff0c;可以通过以下命令安装 OpenJDK&#xff1a; s…

活动图高阶讲解-15

1 00:00:00,000 --> 00:00:07,200 目前来说&#xff0c;这个菱形到底是分还是合 2 00:00:07,200 --> 00:00:13,600 这个是靠入边出边的数量来判断的 3 00:00:13,600 --> 00:00:22,560 有的方法学&#xff0c;它可能会这样搞一些花样 4 00:00:22,560 --> 00:00:2…

Transformer架构的核心公式类似于数学期望并不复杂,但为什么这个模型这么强呢?

Transformer是一个利用注意力机制来提高模型训练速度的模型&#xff0c;因其适用于并行化计算以及本身模型的复杂程度使其在精度和性能上都要高于之前流行的循环神经网络。 一、Transformer模型整体结构 标准的Transformer结构如下图所示&#xff0c;是一个编码器-解码器架构…

免费SSL通配符证书/SSL泛域名证书获取教程

我们先基本了解什么是SSL证书以及其作用。SSL证书是一种数字证书&#xff0c;它通过为网站提供身份验证和数据加密服务&#xff0c;从而保护网站的用户信息安全。当我们在浏览器的地址栏看到“https”和绿色锁标志时&#xff0c;就表示该网站使用了SSL证书。 那么什么又是通配…

idea 开发serlvet汽车租赁管理系统idea开发sqlserver数据库web结构计算机java编程layUI框架开发

一、源码特点 idea开发 java servlet 汽车租赁管理系统是一套完善的web设计系统sqlserver数据库 系统采用serlvetdaobean mvc 模式开发&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 java se…

34470A是德科技34470A数字万用表

181/2461/8938产品概述&#xff1a; Truevolt数字万用表&#xff08;34460A、34461A、34465A、34470A&#xff09;利用是德科技的新专利技术&#xff0c;使您能够快速获得见解、测量低功耗设备并保持校准的测量结果。Truevolt提供全方位的测量能力&#xff0c;具有更高的精度、…