首页 > 其他分享 >Android Graphics 多屏同显/异显

Android Graphics 多屏同显/异显

时间:2024-03-23 16:34:43浏览次数:12  
标签:多屏 Demo Graphics 同显 Android 异显

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

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


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

 

标签:多屏,Demo,Graphics,同显,Android,异显
From: https://www.cnblogs.com/roger-yu/p/18091263

相关文章

  • Android开发笔记[16]-简单使用wasmedge运行时
    摘要使用wasmedge运行时在Android实现"容器化"运行,将fibonacci计算函数打包进入wasm然后打包进入APK中.关键信息AndroidStudio:Iguana|2023.2.1Gradle:distributionUrl=https://services.gradle.org/distributions/gradle-8.4-bin.zipjvmTarget='1.8'minSdk24targe......
  • Android开发笔记[15]-设置页
    摘要使用MMKV数据框架实现设置页数据同步,设置页可以对其他页面进行设置;设置页数据通过MMKV框架持久化存储,重启APP不丢失.关键信息AndroidStudio:Iguana|2023.2.1Gradle:distributionUrl=https://services.gradle.org/distributions/gradle-8.4-bin.zipjvmTarget='1.......
  • Android 设置相关页面
    Android设置相关页面本文主要记录下android中跳转设置相关页面的一些action.在android中,我们一般使用intent+指定的action来跳转相关设置页面.1:WLANAction设置为Settings.ACTION_WIFI_SETTINGS,用户可以跳转wifi设置页面.Intentintent=newIntent(Settings.ACTION......
  • uniapp发布到h5调用Android原生拍照,相册,uniapp如何显示并上传
    先说一下我这边的需求:uniapp这边发布到h5,然后调用Android原生拍照,选择相册,最后将路径回调到uniapp,uniapp那边image要优先将图片回显出来,并将图片上传到服务器遇到的问题:1调用原生拍照,选择相册回调到uniapp,uniapp的image控件无法展示Android那边回调回来的图片路径,但是如......
  • Android View的动画效果,上移展示和下移隐藏
    原文:AndroidView的动画效果,上移展示和下移隐藏-Stars-One的杂货小窝项目里的一个小需求(实际是要和手势操作一起,上滑和下拉触发此动画效果),记录一下PS:本篇先记录下动画效果,下篇再将如何监听滑动手势效果原理实际通过View的translationY的属性来实现上移代码val......
  • Android 底层问题日志记录
    上电日志ddr异常(ddr内存-->内存是其它硬件与CPU进行沟通的桥梁)(220817_11:21:48.229)[dramc]DRAM_FATAL_ERR_FLAG=0x80000020(220817_11:21:48.229)[dramc]fataldramexceptionfound!resetsystem..(220817_11:22:25.531)Pllinitstart...PLL(PhaseLockedLoop......
  • Android11.0 SystemUI 下拉通知栏去掉左右滑动通知菜单功能
    1.前言在11.0的系统rom产品定制化开发中,在systemui模块中关于下拉状态栏这块也是非常重要的部分,最近在关于systemui下拉通知栏的每条通知部分要求去掉通知栏通知的长按事件,不需要长按功能,所以就需要分析下关于长按事件是在哪里注册的,然后去掉就可以了,接下来分析实现相关功能......
  • QT6 android下配置文件打包到APK
    一.遇到问题   用QT做android开发,生成的apk文件默认不包含程序配置文件和png文件,导致程序在android上无法读取必要的参数和logo,本文主要解决这个问题,并详细讲述QTandroid的apk程序打包流程。二.APK打包流程1.如何生成APK  当我们的工程的构建套件选择Android编译器......
  • 与Android Gradle Plugin对应的Gradle版本和Android Studio版本
    Gradle版本和AndroidGradlePlugin对应版本Gradle版本AndroidGradlePlugin版本8.4(Alpha版)8.6-rc-18.38.48.28.28.18.08.08.07.47.57.37.47.27.3.37.17.27.07.04.2.0+6.7.1AndroidStudio版本和AndroidGradlePlugin对应版本AndroidStudio版本AndroidGradlePlugi......
  • 870大神安卓Android电影院订票app设计-计算机毕业源码设计
    【友情提示】本店所有安卓Android项目都支持Eclipse和AndroidStudio编程工具,你们可以任意选择开发软件!开发环境:Myclipse(服务器端)+Eclipse(手机客户端)+mysql数据库 影院系统在电影院有着重要的地位,它不仅保存着电影院的基本信息,而且会储存大量的用户个人信息。影......