“ 亏功一篑,未成丘山。凿井九阶,不次水泽。行百里者半九十,小狐汔济濡其尾。故曰时乎,时不再来。终终始始,是谓君子。”

01


前言

随着Android智能驾舱系统的普及各种信息交互、影音娱乐场景应用的不断创新, 需要Android Framework开发人员更深入地了解多屏同显/异显的基本原理。从这篇文章开始,我们将从简单的C++多屏显示的示例开始,同大家从浅入深、从表入里,初步剖析安卓多屏显示的基本原理。

在前期的文章中,我们曾对安卓多屏显示做过一些探索和准备。

如何模拟多屏显示以方便开发测试,给出了两种方式:

1. 使用Emulator来创建虚拟屏幕

Android Emulator - 模拟器多屏输出

2. 模拟多个物理显示屏

Android Graphics 显示系统 - 如何模拟多(物理)显示屏?

也曾写过简单的demo来演示多屏互动的效果

1. 演示如何把画面显示到指定的屏幕上

Android 多屏显示 -- 从一个简单的Demo开始

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 多屏同显/异显 - 开篇

欢迎关注公众号,阅读系列文章,获取源码!

Android Graphics 多屏同显/异显的更多相关文章

  1. RK3288 双屏异显,两屏默认方向不一致

    CPU:RK3288 系统:Android 5.1 RK3288 支持双屏异显,一般都会同方向显示,如果遇到两个 lcd 的默认方向不一致,只需修改下面参数即可. 例如:主屏为mipi接口,分辨率为 ...

  2. RK3288 6.0 双屏异显,横屏+竖屏【转】

    本文转载自:http://blog.csdn.net/clx44551/article/details/78215730?locationNum=8&fps=1 RK3288 6.0 双屏异显 ...

  3. iTOP-iMX6开发板Android系统下LVDS和HDMI双屏异显方法

    迅为iMX6 开发板 android 系统下 LVDS 和 HDMI 双屏异显的使用过程. 注意,iTOP-iMX6 开发板的 android 系统想要实现对 LVDS 和 HDMI 双屏异显功能的支 ...

  4. RK3288 增加双屏异显 eDP+LVDS

    CPU:RK3288 系统:Android 5.1 下面是官方文档中的信息. 1.rk3288 支持的显示接口可以任意组合. 2.双屏异显时,一个显示接口当主屏,另一个当副屏:主副屏由板级 dts 文 ...

  5. Rk3288 双屏异显单触摸

    系统版本:RK3288 android 5.1 设备同时有两个lcd,主屏是mipi接口,带有触摸屏,触摸屏是usb接口,副屏是hdmi接口,没有触摸屏,正常情况下,两个lcd显示相同内容,触摸屏一切 ...

  6. RK3288 双屏异显时,触摸屏(USB接口)无反应

    系统版本:RK3288 android 5.1 设备同时有两个lcd,主屏是mipi接口,带有触摸屏,触摸屏是usb接口,副屏是hdmi接口,没有触摸屏,正常情况下,两个lcd显示相同内容,触摸屏一切 ...

  7. 【ARM开发板】迅为IMX6开发板QT下LVDS和HDMI双屏异显

    本文转自迅为论坛:http://www.topeetboard.com 平台:迅为-IMX6开发板 首先开发板分别连接9.7寸屏和HDMI显示器,然后使用MfgTool工具烧写QT系统,然后拨码开关设 ...

  8. [Android6.0][RK3399] 双屏异显代码实现流程分析(一)【转】

    本文转载自:http://blog.csdn.net/dearsq/article/details/55049182 Platform: RK3399 OS: Android 6.0 Version: ...

  9. iTOP-4418/6818开发板支持双屏异显,双屏同显

    iTOP-4418/6818开发板平台安卓系统下支持双屏异显,双屏同显,客户可按照不同用途,分别播放适合屏幕显示方式的内容 ,如HDMI屏幕和LCD屏幕显示不同内容, 一个屏幕播放广告,另一个屏幕运行 ...

  10. 【转】android Graphics(四):canvas变换与操作

    android Graphics(四):canvas变换与操作 分类: 5.andriod开发2014-09-05 15:05 5877人阅读 评论(18) 收藏 举报   目录(?)[+]   前言 ...

随机推荐

  1. Spring事务使用注意事项

    Spring提供的事务使用起来很方便,一个@Transactional注解就搞定全部,但是如果不注意,也会踩坑 提到事务就应该想到至少以下几点: 1.在事务方法中加锁,可能会导致锁失效 无论是Java ...

  2. 玩转 CMS2

    玩转 CMS2 上篇研究了样式.请求.evn.mock,感觉对效率的提升没有太明显作用. 比如某个工作需要2天,现在1天可以干完,这就是很大的提升. 提高效率的方法有代码复用.模块化.低代码工具. 目 ...

  3. 使用JS实现博客搜索关键字高亮

    说明 最近博客添加了搜索功能,有个需求是要针对搜索结果中搜索关键字需要高亮显示. 以便用户可以更快速的挑选自己中意的文章. 原理就是在渲染列表数据中给含有关键字的文本标签添加自定义class,渲染完毕 ...

  4. TCP协议的流量控制和拥塞控制

    一开始,我总是容易把这2个概念搞混淆了,因此,为了加深理解,我写出来整理下思路. 一:流量控制 什么是流量控制,它涉及到哪些内容呢? 首先,我们看看一个最简单的tcp传输涉及到哪些东西 发送端,数据, ...

  5. redis7源码分析:redis 多线程模型解析

    多线程模式中,在main函数中会执行InitServerLast void InitServerLast() { bioInit(); // 关键一步, 这里启动了多条线程,用于执行命令,redis起 ...

  6. django学习第四天----mark_safe的用法,静态文件配置,用指令创建django项目应用注意点,ORM介绍,创建表执行命令,模板渲染补充(组件),inclusion_tag 自定义标签

    补充第三天跟safe差不多的一个方法 templatetags文件夹 自定义的py文件 需要先导入模块 from django.utils.safestring import mark_safe @r ...

  7. HTML学习---day01

    1.head标签 <!DOCTYPE html> <!--文档声明H5 html--> <html lang="en"> <head> ...

  8. zynq7000 I2C RTC 与 串口使用

    RS485 串口 测试 硬件上2路串口,其中UART 1对应PS STD IN/OUT,UART 0对应RS485: 图 ‑1 RS485电路,自动转换输入.输出方向 可参考 https://blog ...

  9. 【Azure API 管理】Azure API Management通过请求中的Path来限定其被访问的频率(如1秒一次)

    问题描述 Azure API Management 是否可以通过请求中的Path来限定其被访问的频率? 在系统Request中发现某个Path 在短时间内被频繁的调用,影响了后台服务的性能及安全,所以 ...

  10. Jepsen 测试框架在图数据库 Nebula Graph 中的实践

    在本篇文章中主要介绍图数据库 Nebula Graph 在 Jepsen 这块的实践. Jepsen 简介 Jepsen 是一款用于系统测试的开源软件库,致力于提高分布式数据库.队列.共识系统等的安全 ...