一种基于Android平台的双屏显示方法
【专利摘要】本发明公开一种基于Android平台的双屏显示方法,应用于第一显示屏和第二显示屏之间的切换显示,包括如下步骤:步骤1:在系统中创建一个描述显示屏的DisplayHardware对象,并对该DisplayHardware对象进行初始化,在这个初始化过程中会先后初始化Gralloc、Overlay和OpenGLES等三个模块;步骤2:Gralloc模块对第一显示屏的UI部分进行刷新,同时监测来自UI人机交互界面的控制命令,如果该控制命令是执行双屏操作,则进行双屏显示及视频切换操作,将第一显示屏的内容传输至第二显示屏并显示。
【专利说明】—种基于Android平台的双屏显示方法
【技术领域】
[0001]本发明属于通信领域,具体涉及一种应用于Android平台的双屏显示方法。
【背景技术】
[0002]Android平台是专门针对手机智能显示终端而开发,因此Android原生平台(原生的Android平台)并不直接支持同时配备两个显示设备的应用环境,目前Android平台直接支持的是单屏显示,不直接支持多个显示设备。随着Android系统的应用普及,越来越多的应用环境迫切需要在Android平台上实现双屏显示功能。
[0003]为此,一篇申请号为201310313896.4的发明专利,公开了一种基于Android系统的双屏显示方法,应用于基于Android系统的显示装置,该显示装置包括第一显示控制单元和第二显示控制单元,其方法包括:监测一扩展显示设备是否与所述显示装置连接;根据监测结果产生并发送相应的控制信号至所述第二显示控制单元;以及由所述第二显示控制单元响应所述控制信号与所述第一显示控制单元同时读取显示数据并相应地控制所述扩展显示设备和显示装置的显示屏形成图像或由所述第一显示控制单元读取并控制所述显示装置的显示屏形成图像。利用该发明,通过对外接显示设备是否与显示装置连接的侦测相应地启动或关闭第二显示控制单元,以控制缓冲存储单元中的显示数据的读取,解决现有技术中的Android系统不能将显示内容同时显示在LCD显示屏与扩展设备显示屏上的技术问题。由于在双屏显示技术中,通常两个显示屏所显示的内容各有侧重,对显示效果的要求不同,因此通常两个显示屏的分辨率也不同,但是该发明所实现的目标,通过硬件技术或软件拷贝即可实现,且两个LCD显示屏只能显示同样的内容,而不能分别控制显示,因此应用场合有限。
[0004]再例如一篇申请号为201310030743.9的发明专利,公开了一种基于Android系统的双屏显示方法及智能显示终端,该方法包括以下步骤:分别加载第一 Gralloc模块和第二 Gralloc模块;其中,第一 Gralloc模块与第一巾贞缓冲区设备和第一显不屏绑定;第二Gralloc模块与第二帧缓冲区设备和第二显示屏绑定;通过第一 Gralloc模块与第一帧缓冲区设备控制第一显示屏进行显示和/或通过第二 Gralloc模块与第二帧缓冲区设备控制第二显示屏进行显示。该发明实现了支持双屏显示,当两个显示屏相互切换时,两个屏的分辨率固定,在切屏后不需要进行窗口调整,提高了切屏效率。具体的,该专利提供的方法中,其使用了 2个DisplayHardware对象,2个Gralloc模块,通过巾贞缓冲设备fbO和巾贞缓冲设备fbl分别用于显示第一和第二个显示屏的所有内容(包括Π和视频),没有视频层与UI层的分开处理和叠加。因此,通过上述描述可知,该发明虽然可以在android平台上实现双屏显示及视频切换,且可实现两个屏幕显示不一样的内容,但需要实现两份功能一样的软件框架代码,这无疑增加了系统的代码量,增加了产品后续的维护工作量,同时这两个显示屏使用两份软件分别进行屏幕画面刷新显示,消耗大量系统资源。
【发明内容】
[0005]因此,针对上述的问题,本发明提出一种基于Android平台的双屏显示方法,实现双屏显示不同画面内容,并实现视频在双屏之间的切换,且其实现逻辑简单而高效,不需要两套软件代码分别控制两个显示屏,同时充分利用硬件提供的混合叠加功能,从而解决现有技术之不足。
[0006]其中,对于视频在双屏之间的切换,是基于overlay叠加机制,将用于图形系统输出的主显示区(帧缓冲区设备fbO或fbl)和用于视频输出的叠加显示区(帧缓冲区设备fb2)进行混合叠加,并最终呈现在屏幕上,同时支持使用两个不同分辨率的显示屏,并支持视频在两个显示屏之间的切换显示,同时支持以视频显示比例不失真的方式自动进行全屏切换。其中,叠加机制,是视频播放器在播放视频时,屏幕上显示的内容是由底下的UI层(包括标题栏、按钮、边框等UI元素)和上面的视频层叠加混合而成。
[0007]具体的,本发明所采用的技术方案是,一种基于Android平台的双屏显示方法,应用于第一显示屏和第二显示屏之间的切换显示,包括如下步骤:
步骤1:在系统中创建一个描述显示屏的DisplayHardware对象,并对该DisplayHardware对象进行初始化,在这个初始化过程中会先后初始化Gralloc、Overlay和OpenGL ES等三个模块;
步骤2 =Gralloc模块对第一显示屏的UI部分(即帧缓冲区设备fbO)进行刷新,同时监测来自UI人机交互界面的控制命令,如果该控制命令是执行双屏操作,则进行双屏显示及视频切换操作,将第一显示屏的内容传输至第二显示屏并显示,其具体包括如下过程:
步骤21:通过DisplayHardware对象,获取第一显示屏的巾贞缓冲区设备fbO的显存地址和设备信息(例如分辨率),同时获取保存视频内容的帧缓冲区设备fb2的显存地址和设备信息;帧缓冲区设备fbO用于管理第一显示屏的⑶I系统元素显示;帧缓冲区设备fb2用于管理视频内容显示,通过将fb2和fbO叠加可以实现视频在第一显示屏的播放,通过将fb2和fbl叠加可以实现视频在第二显示屏的播放;
步骤22:设置第二显示屏的帧缓冲区设备fbl的显示模式(例如分辨率);帧缓冲区设备fbl用于管理第二显示屏的⑶I系统元素显示;
步骤23:清空帧缓冲区设备fbO、帧缓冲区设备fbl和帧缓冲区设备fb2的显存内容;步骤24 =Overlay模块调用硬件提供的图像混合叠加处理功能,将帧缓冲区设备fb2(视频层)与帧缓冲区设备fbl (UI层)进行叠加,由于帧缓冲区设备fbl始终与第二显示屏绑定,因此叠加之后即可实现视频在第二显示屏播放。
[0008]进一步的,所述步骤24中,第一显示屏中需要显示到第二显示屏的内容信息是视频信息,帧缓冲区设备fb2用于管理第二显示屏的视频部分显示;此时Overlay模块首先获取包含该视频信息的视频控件的信息(例如长宽大小),根据帧缓冲区设备fbl的显示模式计算其显示区域,根据该显示区域来调整视频控件的大小参数;然后将下一帧视频内容拷贝到当前帧地址,用于刷新视频内容,从而实现视频从第一显示屏切换到第二显示屏。
[0009]更进一步的,所述步骤2中,Gralloc模块对第一显示屏的Π部分进行刷新,监测来自UI人机交互界面的控制命令,具体包括如下内容:视频播放器的开始播放按钮调用系统多媒体库中的StartO接口开始播放视频;start()接口调用Surfaceflinger服务的 createOverlay O 方法;Surfacef linger 服务的 createOverlay O 方法中首先创建一个OverlaySource对象;0verlaySource构造函数获取之前系统开机已初始化过的Overlay模块,并调用Overlay模块的createOverlay O方法创建Overlay对象实例;Overlay模块的createOverlay O方法创建overlay对象,获取巾贞缓冲区设备fbO的分辨率,同时初始化中贞缓冲区设备fb2,并获取fb2显存地址;overlay对象中打开overlay模块,保存overlay数据操作相关的信息和操作接口,并重新配置overlay对象。
[0010]进一步的,所述步骤I中,对DisplayHardware对象进行初始化具体包括如下内容:
对Gralloc模块进行初始化:获取Gralloc模块的操作接口和帧缓冲区设备fbO的显存地址和设备信息,并进行Gralloc模块和帧缓冲区设备fbO的初始化;Gralloc模块用来分配缓冲区,帧缓冲区设备fbO用于将缓冲区渲染到帧缓冲区(即显示屏的显存);
对Overlay模块进行初始化:获取overlay模块的控制接口,以备后续使用overlay时调用,同时启动overlay线程,该overlay线程用于执行处理双屏显示以及视频切换流程;对 OpenGL ES (全称 Open Graphics Library for Embedded Systems,即用于嵌入式系统的开放图形编程接口)模块进行初始化:打开OpenGL ES库,获取OpenGL ES相关信息并对其进行初始化。
[0011]进一步的,所述步骤I中,对DisplayHardware对象进行初始化之前还执行具有如下过程:启动系统服务SystemServer,在SystemServer服务初始化过程中启动SurfaceFlinger服务;Surfacef linger服务初始化过程中调用readyToRun O函数初始化整个显示系统;readyToRun O函数执行中首先调用newDispIayHardware O接口创建一个DisplayHardware 对象。
[0012]本发明提出并实现了一种基于叠加机制的Android平台车载终端的双屏显示及视频切换方法,通过Gralloc模块和Overlay模块的操作执行来实现双屏显示和切换显示屏。其中,Overlay模块位于Android系统的硬件抽象层,也称为视频叠加层,用于加速视频数据的显示输出。Android视频播放器在播放视频时,显示屏幕上除了视频区域之外,还包括标题栏、按钮、边框等GUI系统元素。在具有硬件视频叠加层情况下,视频部分和GUI系统元素部分可以分别进行构建。本技术方案正是利用了视频叠加层硬件的性能实现了高效的双屏显示和视频切换。通过对该模块的构建,实现视频在两个显示屏之间的切换显示。
[0013]与现有技术不同的是,本发明的技术方案实现的系统支持两个显示屏显示不同的内容,且两个显示屏的分辨率也可以不一样。
[0014]同时,视频在两个显示屏之间切换后可自动进行分辨率调整,并以视频显示比例不失真的方式自动进行全屏视频播放。
[0015]另外,本发明的实现逻辑清晰,根据产品实际情况有针对性地实现了 Overlay模块和Gralloc模块,同时充分发挥了视频叠加层硬件的优势,由此给产品系统带来了多方面的显著有益效果:
1,通过本发明的方案实现双屏切换,尤其适合于车载终端,第一显示屏可作为后台主屏,用于司机的车载功能操作、以及前台显示屏视频节目的选取和控制,第二显示屏作为前台显示屏,则可用于为乘客播放视频节目,给产品带来了更好的用户体验,明显提升了车载终端广品的档次;
2,视频播放一直是嵌入式设备中耗费大量系统资源的模块,本发明的技术方案充分发挥了视频叠加层硬件的性能,明显节省了视频播放和双屏显示时的系统资源;由于节省了系统资源,使得使用本技术方案后的系统更加稳定,性能更加优越。
[0016]本发明与现有技术相比,在系统运行过程中只创建一个DisplayHardware对象,系统运行过程中只使用一个Gralloc模块。且引入了 Overlay模块,用于实现屏幕上视频层与Π层的叠加,而现有技术中尚没有视频叠加的思想的运用,具体的,本发明的帧缓冲设备fbO和帧缓冲设备fbl分别用于显示第一和第二个显示屏的UI内容,帧缓冲设备fb2用于显示视频内容,基于Overlay叠加方案依赖并充分利用硬件提供的显示缓冲区叠加混合功能,进而实现视频层与Π层的分开处理和叠加。另外,现有技术中使用的是固定的分辨率,通过两个屏的禁止和使用单独控制来达到屏幕切换显示的效果,因此没有分辨率调整的概念,而本发明实现自动分辨率调整。
【专利附图】
【附图说明】
[0017]图1为本发明的方法的实现框架的逻辑架构。
【具体实施方式】
[0018]现结合附图和【具体实施方式】对本发明进一步说明。
[0019]本发明跳出现有常规方法的束缚,在基于Android平台的双屏显示方法,基于overlay叠加机制,将用于图形系统输出的主显示区和用于视频输出的叠加显示区进行混合叠加,并最终呈现在屏幕上,同时支持使用两个不同分辨率的LCD显示屏,并支持视频在两个显示屏之间的切换显示,同时支持以视频显示比例不失真的方式自动进行全屏切换。
[0020]作为一个具体实例,本发明的技术方案以应用于车载终端为例来具体说明。
[0021]本发明的基于An dr ο i d平台的双屏显示方法所阐述的系统包括下述模块:应用程序,Surfaceflinger 服务,DisplayHardware 模块,Gralloc 模块,Overlay 模块,Framebuffer帧缓冲区设备,以及显示屏硬件。各模块的功能和作用如下:
应用程序:主要是视频播放器。在该模块中,本技术方案在用户操作界面上增加了一个【切换】按钮,用于实现视频在两个显示屏之间的切换显示。
[0022]Surfaceflinger服务模块:Surfaceflinger服务是Android系统中用于管理系统中的framebuffer帧缓冲区设备的服务。在该模块中,本技术方案增加了对overlay的控
制和管理。
[0023]DisplayHardware 模块:DispIayHardware 包含于 Surfaceflinger 服务中,在Android系统中用于描述系统的显示屏对象。
[0024]Gralloc模块:位于Android系统的硬件抽象层,封装了对framebuffer帧缓冲区设备的所有操作接口。在这个模块中,本技术方案实现了对两个framebuffer设备(帧缓冲区设备fbO和帧缓冲区设备fbl)的操作。
[0025]Overlay模块:0verlay模块位于Android系统的硬件抽象层,也称为视频叠加层,用于加速视频数据的显示输出。Android视频播放器在播放视频时,显示屏幕上除了视频区域之外,还包括标题栏、按钮、边框等⑶I系统元素。在具有硬件视频叠加层情况下,视频部分和GUI系统元素部分可以分别进行构建。本技术方案正是利用了视频叠加层硬件的性能实现了高效的双屏显示和视频切换。该模块是本技术方案的重点模块,是实现视频在两个显示屏之间切换显示的主要实现部分。[0026]Framebuffer帧缓冲区设备模块:Android系统将显示屏硬件抽象为一个framebuffer帧缓冲区设备,应用层代码通过framebuffer设备提供的open、read、write、ioctl、close等标准操作接口控制显示屏的工作。在本系统中,帧缓冲区设备fbO用于主屏上的⑶I系统元素显示,帧缓冲区设备fbl用于第二显示屏上的⑶I系统元素显示,帧缓冲区设备fb2用于视频内容显示。
[0027]显示屏硬件:本系统中包括两个不同显示分辨率的IXD显示屏,第一个显示屏的分辨率为800X480,作为后台显示屏为车上司机提供车载操作界面,在该系统中称之为主屏;第二个显示屏的分辨率为640X480,作为前台显示屏为乘客提供视频节目播放,在该系统中称之为第二显示屏。
[0028]本发明的系统逻辑结构参见图1所示。本发明所阐述的方法包括如下过程:
过程1:基于Android平台的双屏显示方法所阐述的系统启动过程中双屏切换模块相
关的初始化流程:
(1)系统开机启动系统服务SystemServer,在SystemServer服务初始化过程中启动SurfaceFlinger 月艮务;
(2)Surfaceflinger服务初始化过程中调用readyToRunO函数初始化整个显示系统;
(3)readyToRun ()函数执行中首先调用newDispIayHardware ()接口创建一个DisplayHardware 对象;
(4)DisplayHardware构造函数进行 Gralloc、Overlay 和 OpenGL ES 的初始化;
(5)Gral1c初始化过程中打开Gralloc模块和帧缓冲区设备fbO,获取Gralloc模块操作接口和帧缓冲区设备fbO的显存地址和设备信息,并进行Gralloc模块和帧缓冲区设备fbO的初始化;
(6)Overlay初始化过程中打开Overlay模块,获取overlay模块的控制接口,以备后续使用overlay时调用,同时启动overlay线程,执行处理双屏显示和视频切换流程;
(7)OpenGLES (全称 Open Graphics Library for Embedded Systems,即用于嵌入式系统的开放图形编程接口)初始化过程中打开OpenGL ES库,并初始化和获取OpenGL ES相
关信息;
(8)系统启动双屏子系统相关的初始化完成。
[0029]过程2:启动Overlay模块的流程:
(1)点击视频播放器【开始】播放按钮;
(2)程序调用系统多媒体库中的StartO接口开始播放视频;
(3)start O 接口最终会调用 Surfaceflinger 服务的 createOverlay O 方法;
(4)Surfacef linger 服务的 createOverlay ()方法中首先创建一个 OverlaySource 对
象;
(5)OverlaySource构造函数获取之前系统开机已初始化过的Overlay模块,并调用Overlay 模块的 createOverlay ()方法创建 Overlay 对象;
(6)Overlay模块的createOverlay O方法创建overlay对象,获取帧缓冲区设备fbO的分辨率,同时初始化帧缓冲区设备fb2,并获取fb2显存地址;
(7)overlay对象中打开overlay设备,保存overlay数据操作相关的信息和操作接口,并重新配置overlay ;(8)Overlay初始化完成。
[0030]过程3:双屏显示及视频从主屏切换到第二显示屏的实现流程:
(1)系统通过Gralloc模块的postO方法实现主屏的UI部分的刷新;
(2)点击视频播放器【切换】按钮,触发双屏显示及视频切换操作;
(3)代码通过设置自定义的系统属性来触发双屏显示及视频切换,例如系统属性persist, yx.app.SecondDisplayConnected为I则触发双屏显示及视频切换;
(4)屏幕刷新方法postO读取系统属性的值来判断当前是否需要进行双屏显示和视频切换操作,例如如果persist, yx.app.SecondDisplayConnected的值为1,则当前需要进行双屏显示和视频切换操作;
(5)设置帧缓冲区设备fbl的显示分辨率等显示模式;
(6)清空帧缓冲区设备fbO、fbl和fb2显存;
(7)调用硬件提供的图像混合叠加处理功能,将帧缓冲区设备fb2和fbl进行叠加,即将视频切换到第二显示屏;
(8)通过内存映射获取帧缓冲区设备fbl的显存地址;
(9)判断是否启动第二显示屏的UI刷新线程:由于本系统中第二显示屏作为前台显示屏,默认不显示Π界面, 仅用于全屏播放视频节目,故不启动第二显示屏的UI刷新线程;
(10)系统通过Overlay模块的OverlayThread:: threadLoop ()线程,实现帧缓冲区设备fb2,即视频内容的刷新;
(11)获取帧缓冲区设备fbl的分辨率;
(12)初始化帧缓冲区设备fb2并获取显存地址;
(13)计算视频输出参数:首先获取视频控件的长宽大小,同时根据目标显示屏(即第二显示屏)的显示分辨率,根据以下步骤计算视频显示区域的大小:
Il原来的new_win->nWidth和new_win_>nHeight保存的是视频控件的大小height_tmp= (640*new_win_>nHeight)/new_win_>nWidth;// 根据视频控件和第二显示屏的长宽比例,获取在第二显示屏上显示时的视频画面高度
if (height_tmp<=480) {//如果视频画面高度不大于第二显示屏的高度,则可确认视频显示区域
new_win->nHeight=height_tmp; //最终视频显示画面的高度 new_win->nffidth=640; //最终视频显示画面的宽度
new_win->nTop=(480-new_win->nHeight) /2; //调整视频显示位置,确保视频画面在屏幕的中间
new_win->nLeft=0;
}else{//如果视频画面高度大于第二显示屏的高度,则需要缩小视频显示画面比例new_win->nWidth= (480*new—win_>nWidth) /new_win->nHeight; // 最终视频显不幽面的宽度
new—win_>nHeight=480;//最终视频显示画面的高度 new_win->nTop=0; //调整视频显示位置,确保视频画面在屏幕的中间 new_win->nLeft=(640-new—win_>nWidth)/2;
}(14)将下一帧视频内容拷贝到当前帧地址,用于刷新视频内容;
(15)完成视频从主屏到第二显示屏的切换过程。
[0031]过程4:视频从第二显示屏切换到主屏的实现流程:
(1)系统通过Gralloc模块的postO方法实现主屏的UI部分的刷新;
(2)点击视频播放器【切换】按钮,触发视频切换操作;
(3)通过设置系统属性的值来触发视频切换操作,例如设置系统属性persist,yx.app.SecondDisplayConnected的值为O触发视频切换操作;
(4)通过屏幕刷新方法postO读取系统属性,来判断第二显示屏当前是否处于连接状态,例如系统属性persist, yx.app.SecondDisplayConnected值为O,即表示第二显示屏当前未连接;
(5)清空帧缓冲区设备fbO、fbl和fb2显存;
(6)将帧缓冲区设备fb2和fbO进行叠加,即将视频切换到主屏;
(7)更新帧缓冲区设备fbO显存的内容;
(8)停止第二显示屏的UI刷新线程;
(9)系统通过Overlay模块的OverlayThread:: threadLoop ()线程,实现帧缓冲区设备fb2,即视频内容的刷新;
(10)获取帧缓冲区设备fbO的分辨率;
(11)初始化帧缓冲区设备fb2并获取其显存地址;
(12)设置系统当前显示模式为DISPLAY_MODE_NORMAL正常显示模式;
(13)计算视频输出参数:由于视频将切换回主屏显示,所以只需按照视频控件的长宽大小和位置设置视频显示区域的大小即可;
Il原来的new_win->nWidth和new_win_>nHeight保存的是视频控件的大小 new_win->nTop=(new_win_>nTop+4)&0xfffffff8; // 这里的计算是为了地址对齐 new_win->nLeft=(new_win->nLeft+4)&0xfffffff8; new_win->nffidth=(new_win->nffidth+4)&0xfffffff8; new_win->nHeight=(new_win->nHeight+4)&0xfffffff8;
(14)将下一帧视频内容拷贝到当前帧地址,用于刷新视频内容;
(15)完成视频从第二显示屏到主屏的切换过程。
[0032]本发明通过上述方法和步骤,实现了一种基于叠加机制的Android平台车载终端的双屏显示及视频切换方法,本发明的技术方案实现的系统支持两个显示屏显示不同的内容,且两个显示屏的分辨率也可以不一样;同时,视频在两个显示屏之间切换后可自动进行分辨率调整,并以视频显示比例不失真的方式自动进行全屏视频播放。
[0033]尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
【权利要求】
1.一种基于Android平台的双屏显示方法,应用于第一显示屏和第二显示屏之间的切换显示,包括如下步骤: 步骤1:在系统中创建一个描述显示屏的DisplayHardware对象,并对该DisplayHardware对象进行初始化,在这个初始化过程中会先后初始化Gralloc、Overlay和OpenGL ES等三个模块; 步骤2 =Gralloc模块对第一显示屏的UI部分进行刷新,同时监测来自UI人机交互界面的控制命令,如果该控制命令是执行双屏操作,则进行双屏显示及视频切换操作,将第一显示屏的内容传输至第二显示屏并显示;其具体包括如下过程: 步骤21:通过DisplayHardware对象,获取第一显示屏的帧缓冲区设备fbO的显存地址和设备信息,同时获取保存视频内容的帧缓冲区设备fb2的显存地址和设备信息;帧缓冲区设备fbO用于管理第一显示屏的⑶I系统元素显示;帧缓冲区设备fb2用于管理视频内容显示; 步骤22:设置第二显示屏的帧缓冲区设备fbl的显示模式;帧缓冲区设备fbl用于管理第二显示屏的⑶I系统元素显示; 步骤23:清空帧缓冲区设备fbO、帧缓冲区设备fbl和帧缓冲区设备fb2的显存内容; 步骤24 =Overlay模块调用硬件提供的图像混合叠加处理功能,将帧缓冲区设备fb2与帧缓冲区设备fbl进行叠加,由于帧缓冲区设备fbl始终与第二显示屏绑定,因此叠加之后即实现视频在第二显示屏播放。
2.根据权利要求1所述的基于Android平台的双屏显示方法,其特征在于:所述步骤24中,第一显示屏中需要显示到第二显示屏的内容信息是视频信息,帧缓冲区设备fb2用于管理第二显示屏的视频部分显示;此时Overlay模块首先获取包含该视频信息的视频控件的信息,根据帧缓冲区设备fbl的显示模式计算其显示区域,根据该显示区域来调整视频控件的大小参数;然后将下一帧视频内容拷贝到当前帧地址,用于刷新视频内容,从而实现视频从第一显示屏切换到第二显示屏。
3.根据权利要求2所述的基于Android平台的双屏显示方法,其特征在于:所述步骤2中,Gralloc模块对第一显示屏的Π部分进行刷新,监测来自Π人机交互界面的控制命令,具体包括如下内容:视频播放器的开始播放按钮调用系统多媒体库中的startO接口开始播放视频;start()接口调用Surfaceflinger服务的createOverlay O方法;Surfaceflinger 服务的 createOverlay O 方法中首先创建一个 OverlaySource 对象;OverlaySource构造函数获取之前系统开机已初始化过的Overlay模块,并调用Overlay模块的 createOverlay ()方法创建 Overlay 对象实例;0verlay 模块的 createOverlay ()方法创建overlay对象,获取帧缓冲区设备fbO的分辨率,同时初始化帧缓冲区设备fb2,并获取fb2显存地址;overlay对象中打开overlay模块,保存overlay数据操作相关的信息和操作接口,并重新配置overlay对象。
4.根据权利要求1所述的基于Android平台的双屏显示方法,其特征在于:所述步骤I中,对DisplayHardware对象进行初始化具体包括如下内容: 对Gralloc模块进行初始化:获取Gralloc模块的操作接口和帧缓冲区设备fbO的显存地址和设备信息,并进行Gralloc模块和帧缓冲区设备fbO的初始化;Gralloc模块用来分配缓冲区,帧缓冲区设备fbO用于将缓冲区渲染到帧缓冲区;对Overlay模块进行初始化:获取overlay模块的控制接口,以备后续使用overlay时调用,同时启动overlay线程,该overlay线程用于执行处理双屏显示以及视频切换流程;对OpenGL ES模块进行初始化:打开OpenGL ES库,获取OpenGL ES相关信息并对其进行初始化。
5.根据权利要求1所述的基于Android平台的双屏显示方法,其特征在于:所述步骤I中,对DisplayHardware对象进行初始化之前还执行具有如下过程:启动系统服务SystemServer,在SystemServer服务初始化过程中启动SurfaceFlinger服务;Surfaceflinger服务初始化过程中调用readyToRun O函数初始化整个显示系统;readyToRun()函数执行中首先调用newDispIayHardware O接口创建一个DisplayHardware 对象 。
【文档编号】G09G5/14GK103646638SQ201310724939
【公开日】2014年3月19日 申请日期:2013年12月25日 优先权日:2013年12月25日
【发明者】李培明, 杨磊, 汤益明, 范少卓, 任赋 申请人:厦门雅迅网络股份有限公司