Android Graphics 多屏同显/异显
“ 亏功一篑,未成丘山。凿井九阶,不次水泽。行百里者半九十,小狐汔济濡其尾。故曰时乎,时不再来。终终始始,是谓君子。”
01
前言
随着Android智能驾舱系统的普及各种信息交互、影音娱乐场景应用的不断创新, 需要Android Framework开发人员更深入地了解多屏同显/异显的基本原理。从这篇文章开始,我们将从简单的C++多屏显示的示例开始,同大家从浅入深、从表入里,初步剖析安卓多屏显示的基本原理。
在前期的文章中,我们曾对安卓多屏显示做过一些探索和准备。
如何模拟多屏显示以方便开发测试,给出了两种方式:
1. 使用Emulator来创建虚拟屏幕
2. 模拟多个物理显示屏
Android Graphics 显示系统 - 如何模拟多(物理)显示屏?
也曾写过简单的demo来演示多屏互动的效果
1. 演示如何把画面显示到指定的屏幕上
2. 复杂的多屏互动的demo,多指触控下移动画面
Android Graphics 显示系统 - 多屏互动演示
早前写过的demo要么过于简单,无法完整展现关键功能;要么过于复杂,无法聚焦Graphics多屏显示核心原理。为此,特意写作了C++版本的多屏同显/异显的演示程序,直接调用Surface/BufferQueue/SurfaceComposer的C++ APIs来实现多屏互动的效果。这样我们可以抛开复杂的WMS、AMS等模块复杂的逻辑,聚焦底层多屏显示的基本原理。
02
多屏互动Demo效果展示
C++版本的多屏互动程序提供两个版本:标准版和升级版。
标准版多屏互动Demo
标准版Demo是在早前Surface绘图示例Demo的基础上加上了多屏显示的功能,在交替显示R/G/B纯色图像的同时可以接收实时输入的命令进行多屏互动。
早前Surface绘图示例Demo可以参考:
Android Graphics 显示系统 - Surface绘图示例(四)
Android Graphics 显示系统 - Surface绘图示例(五)
多屏同显
多屏异显(画面拼接)
升级版多屏互动Demo
升级版Demo是在标准版程序基础上加上了视频播放功能,场景展示上更加生动
多屏同显
多屏异显(画面拼接)
03
多屏系列文章基本内容
Android Graphics多屏同显异显系列文章是Graphics系列文章的延续与扩展,我们将开始讲解多屏显示相关的基本原理和常用功能的接口使用。
该系列文章会从上面提到的两个多屏互动的Demo开始,分享、分析、讲解Demo程序设计的思路、原理。从看得到的API入手,探讨相关功能实现所依赖的接口功能逻辑,研究解析SurfaceFlinger在多屏幕下对Layer的处理逻辑,探究HWC在多屏下的行为等。
同时,结合开发过程中遇到的问题及现象,讲解如何通过dumpsys SurfaceFlinger来查看layer的信息进行debug。
阅读原文:
欢迎关注公众号,阅读系列文章,获取源码!
Android Graphics 多屏同显/异显的更多相关文章
- RK3288 双屏异显,两屏默认方向不一致
CPU:RK3288 系统:Android 5.1 RK3288 支持双屏异显,一般都会同方向显示,如果遇到两个 lcd 的默认方向不一致,只需修改下面参数即可. 例如:主屏为mipi接口,分辨率为 ...
- RK3288 6.0 双屏异显,横屏+竖屏【转】
本文转载自:http://blog.csdn.net/clx44551/article/details/78215730?locationNum=8&fps=1 RK3288 6.0 双屏异显 ...
- iTOP-iMX6开发板Android系统下LVDS和HDMI双屏异显方法
迅为iMX6 开发板 android 系统下 LVDS 和 HDMI 双屏异显的使用过程. 注意,iTOP-iMX6 开发板的 android 系统想要实现对 LVDS 和 HDMI 双屏异显功能的支 ...
- RK3288 增加双屏异显 eDP+LVDS
CPU:RK3288 系统:Android 5.1 下面是官方文档中的信息. 1.rk3288 支持的显示接口可以任意组合. 2.双屏异显时,一个显示接口当主屏,另一个当副屏:主副屏由板级 dts 文 ...
- Rk3288 双屏异显单触摸
系统版本:RK3288 android 5.1 设备同时有两个lcd,主屏是mipi接口,带有触摸屏,触摸屏是usb接口,副屏是hdmi接口,没有触摸屏,正常情况下,两个lcd显示相同内容,触摸屏一切 ...
- RK3288 双屏异显时,触摸屏(USB接口)无反应
系统版本:RK3288 android 5.1 设备同时有两个lcd,主屏是mipi接口,带有触摸屏,触摸屏是usb接口,副屏是hdmi接口,没有触摸屏,正常情况下,两个lcd显示相同内容,触摸屏一切 ...
- 【ARM开发板】迅为IMX6开发板QT下LVDS和HDMI双屏异显
本文转自迅为论坛:http://www.topeetboard.com 平台:迅为-IMX6开发板 首先开发板分别连接9.7寸屏和HDMI显示器,然后使用MfgTool工具烧写QT系统,然后拨码开关设 ...
- [Android6.0][RK3399] 双屏异显代码实现流程分析(一)【转】
本文转载自:http://blog.csdn.net/dearsq/article/details/55049182 Platform: RK3399 OS: Android 6.0 Version: ...
- iTOP-4418/6818开发板支持双屏异显,双屏同显
iTOP-4418/6818开发板平台安卓系统下支持双屏异显,双屏同显,客户可按照不同用途,分别播放适合屏幕显示方式的内容 ,如HDMI屏幕和LCD屏幕显示不同内容, 一个屏幕播放广告,另一个屏幕运行 ...
- 【转】android Graphics(四):canvas变换与操作
android Graphics(四):canvas变换与操作 分类: 5.andriod开发2014-09-05 15:05 5877人阅读 评论(18) 收藏 举报 目录(?)[+] 前言 ...
随机推荐
- NC25879 外挂
题目链接 题目 题目描述 我的就是我的,你也是我的,记住了,狐狸! --韩信-白龙吟 对于打赌输了的小T会遭受到制裁,小s修改了数据库使他可以派出许多军队来围攻小T. 很不幸,小T与小s打赌打输了 ...
- Centos7 和 Centos8 升级内核
从yum安装kernel-ml 对于Centos7 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org yum install htt ...
- 【Unity3D】血条(HP)
1 需求实现 人机交互Input 中实现了通过键盘控制坦克运动,通过鼠标控制坦克发射炮弹,本文将在此基础上,增加血条(HP)功能.炮弹命中后,HP 值会减少,因此需要应用到 刚体组件Rigidbo ...
- RESTful架构与RPC架构
RESTful架构与RPC架构 在RESTful架构中,关注点在于资源,操作资源时使用标准方法检索并操作信息片段,在RPC架构中,关注点在于方法,调用方法时将像调用本地方法一样调用服务器的方法. RE ...
- Python之读取Excel
介绍 现在交给你一份2010年美国各州县人口普查表:censuspopdata.xlsx.共72864条记录. 每一行代表一个县某统计区的人口数. 需要你统计出:各县统计区数量和人口数. 表格内容长这 ...
- 三分钟数据持久化:Spring Boot, JPA 与 SQLite 的完美融合
三分钟,迎接一个更加高效和简便的开发体验. 在快节奏的软件开发领域,每一个简化工作流程的机会都不容错过.想要一个无需繁琐配置.能够迅速启动的数据持久化方案吗?这篇文章将是你的首选攻略.在这里,我们将向 ...
- 【Azure Service Fabric】关于Service Fabric的相关问题
问题一:Service Fabric 是否支持Private Link? 在Azure Private Endpoint文档中,罗列出了 Azure 上支持 Private Link 的服务.Serv ...
- C++ STL 容器 forward_list类型
C++ STL 容器 forward_list类型 介绍 std::forward_list 是 C++ 标准模板库 (STL) 中的一个单向链表容器.与 std::list 不同,std::forw ...
- 1. JVM体系结构
1. 前言 作为Java工程师 ,jvm对于 java的重要性不言而喻,但是 我们又对jvm了解多少 Java的跨平台性 java发布的口号 "一处编译到处运行 " 依赖于jvm, ...
- VC-MFC(1) 随笔笔记+连接数据库
1 数据库语句: 2 CREATE DATABASE---创建新数据库 3 ALTER DATABASE-----修改数据库 4 CREATE TABLE ---- -创建新表 5 ALTER TAB ...