专利名称:双屏电子设备的显示方法及系统的制作方法
技术领域:
本发明涉及到电子设备显示技术领域,特别涉及到一种双屏电子设备的显示方法及系统。
背景技术:
现有技术中的电子设备,通常只设置有一个显示屏进行图像显示;随着用户需求的提高,市场上已有设置两个显示屏的电子设备出现。但是两个显示屏通常设置在同一面,比如一上一下设置或者一左一右设置,甚至还有两面开合式设置(使用状态中也通常是属于同一面)。而且,现有技术中是使用两套系统分别对两个显示屏进行显示控制,如此可造成资源的浪费
发明内容
本发明的主要目的为提供一种双屏电子设备的显示方法,可节省资源且方便使用。本发明提出一种双屏电子设备的显示方法,包括步骤分别为电子设备的两个显示屏建立显示硬件对象;在需要进行显示屏切换时,调用切屏接口,切换显示硬件对象;激活需要进行显示的显示屏,调用需要显示的内容并输出显示;并将另一显示屏设置为待机状态。优选地,所述调用需要显示的内容并输出显示的步骤前还包括对待显示的显示屏窗口进行调整。优选地,所述分别为电子设备的两个显示屏建立显示硬件对象的步骤后还包括通过所述显示硬件对象分别创建本地窗口对象;判断是否创建成功;如果创建成功,激活待显示的显示屏进行显示。优选地,所述在需要进行显示屏切换时,调用切屏接口,切换显示硬件对象的步骤具体包括调用SurfaceComposerClient 的本地方法;获取守护进程ServiceManager ;提交与SurfaceFlinger的通信请求;ServiceManager 与 Binder driver 交互查找 SurfaceFlinger ;在服务存在时,返回指向SurfaceFlinger的IBinder对象;访问SurfaceFlinger 中的切屏接口。优选地,所述激活需要进行显示的显示屏,调用需要显示的内容并输出显示的步骤具体包括调用setFlipScreen函数开始切屏处理;
调用setCurrentDisplayld函数指定当前使用的显示屏;调用setTransactionFlags函数设置操作处理标识;调用threadLoop函数判断是否有事件需处理;在需要处理时,调用handleTransaction函数进行处理操作;分析操作处理标识判断是否是切屏事件;
在是切屏事件时,调用handleRepaint函数重绘需显示内容;调用PostFrameBuffer函数输出显示内容。本发明还提出一种双屏电子设备的显示系统,包括初始化单元,用于分别为电子设备的两个显示屏建立显示硬件对象;屏幕切换单元,用于在需要进行显示屏切换时,调用切屏接口,切换显示硬件对象;切换处理单元,用于激活需要进行显示的显示屏,调用需要显示的内容并输出显示;并将另一显示屏设置为待机状态。优选地,所述显示系统还包括窗口调整单元,用于对待显示的显示屏窗口进行调整。优选地,所述初始化单元具体用于通过所述显示硬件对象分别创建本地窗口对象;判断是否创建成功;如果创建成功,激活待显示的显示屏进行显示。优选地,所述屏幕切换单元具体用于调用SurfaceComposerClient 的本地方法;获取守护进程ServiceManager ;提交与SurfaceFlinger的通信请求;ServiceManager 与 Binder driver 交互查找 SurfaceFlinger ;在服务存在时,返回指向SurfaceFlinger的IBinder对象;访问SurfaceFlinger 中的切屏接口。优选地,所述切换处理单元具体用于调用setFlipScreen函数开始切屏处理;调用setCurrentDisplayld函数指定当前使用的显示屏;调用setTransactionFlags函数设置操作处理标识;调用threadLoop函数判断是否有事件需处理;在需要处理时,调用handleTransaction函数进行处理操作;分析操作处理标识判断是否是切屏事件;在是切屏事件时,调用handleRepaint函数重绘需显示内容;调用PostFrameBuffer函数输出显示内容。本发明是通过一套显示系统,对两个显示屏进行控制,以节省资源;同时还有利于用户操作,比如可让用户的操作在显示屏切换后连续地进行下去,在显示屏的切换工程中保证显示内容的一致性,并还可根据切换后显示屏的尺寸对显示内容进行相应的调整。
图I是本发明双屏电子设备的显示方法一实施例中步骤流程示意图;图2是本发明双屏电子设备的显示方法一实施例中电子设备结构示意图;图3是本发明双屏电子设备的显示方法一实施例中初始化步骤流程示意图;图4是本发明双屏电子设备的显示方法一实施例中显示屏切换步骤流程示意图;图5是本发明双屏电子设备的显示方法一实施例切换后处理步骤流程示意图;图6是本发明双屏电子设备的显示方法一实施例中结构示意图;图7是本发明双屏电子设备的显示方法另一实施例中结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施例方式应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。参照图1,提出一种双屏电子设备的显示方法一实施例。该显示方法可包括步骤S10、分别为电子设备的两个显示屏建立显示硬件对象;步骤S11、在需要进行显示屏切换时,调用切屏接口,切换显示硬件对象;步骤S12、激活需要进行显示的显示屏,调用需要显示的内容并输出显示;并将另一显示屏设置为待机状态。本实施例中的双屏电子设备的显示方法可应用于具有Android平台的双屏电子设备。本方法是通过一套显示系统,对两个显示屏进行控制,以节省资源;同时还有利于用户操作,比如可让用户的操作在显示屏切换后连续地进行下去,在显示屏的切换工程中保证显示内容的一致性,并还可根据切换后显示屏的尺寸对显示内容进行相应的调整。本实施例中在进行显示屏切换时,可在捕捉到切屏事件后,及时完成显示屏的切换工作,并将所要显示的内容根据当前显示屏的分辨率进行适当的调整;可通过控制位映像显示器与输入设备的系统软件,提供了现代图形用户界面所应具备的许多重要特性,不仅负责在不同的应用程序之间分配显示屏区域,同时还将来自与交互式设备的输入信息发送到特定的应用程序中。上述双屏电子设备进行显示屏切换中,将一个显示屏激活进行显示后,可将另一个显示屏设置为待机状态,节省电能。该显示屏的切换可通过设置硬按键或者软按键,实现手动切换;也可通过设置方向传感器或光线传感器等设备,实现自动切换。该双屏电子设备的两个显示屏,可根据不同功用设置为不同类型的显示屏,比如一个显示屏为电子纸显示屏,另一个显示屏为液晶显示屏等,该电子纸适合阅读且耗电量低,液晶显示屏用途广但耗电。参照图2,上述电子设备可包括具有本体正面11和本体反面12的电子设备本体10以及与电子设备本体10连接的第一显示屏110、第二显示屏120 ;该第一显示屏110设置于本体正面11,该第二显示屏120设置于本体反面12,该电子设备本体10分别控制第一显示屏110以及第二显示屏120进行显示。上述电子设备本体10中还设置有PCB板(PrintedCircuit Board,印刷电路板)13。参照图3,电子设备的系统启动后,需进行显示屏的初始化,具体可包括步骤S101、通过SurfaceFlinger调用readToRun函数进行初始化;
步骤S102、通过SurfaceFlinger为两个显不屏各自创建一个DisplayHardware对象(显示硬件对象);步骤S103、通过DisplayHardware调用自身的init函数进行初始化;步骤S104、通过DisplayHardware创建代表本地窗体的EGLDisplaySurface对象(本地窗口对象);步骤S105、判断EGLDisplaySurface对象是否创建成功;在创建成功时,进行步骤S106 ;否则结束;步骤S106、通过 DisplayHardware 进行 OpenGL ES 的初始化;
步骤S 107、通过 SurfaceFlinger 调用 setCurrentDisplayld 函数指定当前使用的显示屏(待显示的显示屏);步骤S108、通过SurfaceFlinger调用initializeHW函数激活当前显示屏进行显
/Jn oAndroid的底层窗口部分主要包括SurfaceFlinger (底层窗口系统)、DisplayHardware 和 EGLDisplaySurface 等几部分。Surface 是 Android 窗口管理系统中一个十分重要的概念和线索,起到承上启下的关键作用。作为Android窗口管理系统客户端的窗口管理器(WindowManager)和作为服务器端的底层窗口系统(SurfaceFlinger)交互的桥梁就是Surface。Surface代码分为两部分,一部分是由Java语言编写的Surface类,另一部分是由C++语言编写的SurfaceComposerClient类。Surface类是窗口管理器看到的Surface,而SurfaceComposerClient类是底层窗口系统看到的Surface。Surface类实际只是定义了一些功能接口供上层程序调用,而具体的实现则是在SurfaceComposerClient类中完成的。每当Surface对象创建时就有一个相应的SurfaceComposerClient对象被创建。当用户调用Surface中的功能接口时,Surface会首先通过Java的JNI (Java NativeInterface)调用 SurfaceComposerClient 中的相应函数,然后 SurfaceComposerClient 会获取一个指向SurfaceFlinger的IBinder对象,之后通过IBinder对象就可以跨进程访问SurfaceFlinger的功能,交由SurfaceFlinger完成最终的操作处理。在切屏处理操作中显示屏的切换工作是由底层窗口系统SurfaceFlingei*完成的,当窗口管理器WindowManager通知底层窗口系统SurfaceFlinger进行切屏操作时,必须通过 Surface 和 SurfaceComposerClient 来完成,因此在 Surface 和 SurfaceComposerClient中新增一个切屏处理的接口,而实际的工作则由SurfaceComposerClient交给底层窗口系统 SurfaceFlinger 来完成,为了 实现 SurfaceComposerClient 跨进程访问 SurfaceFlinger的功能,必须使用Android所特有的进程间通讯机制Binder。Binder通信通过内核空间的Binder driver来实现,Binder通信可以取得类似“线程迀移(thread migration) ”般的效果,两个进程间的通信看起来就像一个进程进入另一个进程执行代码然后带着执行的结果返回。Android中的Binder通信基于Service和Client,通过一个守护进程ServiceManager专门用于管理所有的Service。每当Android启动时其都会首先启动ServiceManager进程,该ServiceManager加载Binder driver,并将该进程作为System Service Manager,然后该进程将进入一个循环,等待处理来自其它进程的操作请求。Binder通信在底层实现上釆用了共享内存的方式,Client进程和Service进程在建立通信之初,Binder driver会为它们分配一块物理内存空间,然后将这一块内存映射到进程Client、Service各自的进程地址空间,每当Client进程需要传送数据给Service进程时,Client都要首先将这些数据打包,然后通过IBinder对象传递给Binder driver,Binder driver再将这部分数据写入共享的内存空间,如此Service进程就可以直接存取Client发送来的资料,而当Client进程和Service进程通信结束后,Binder driver会负责将内存回收。参照图4,先需要进行显示屏切换时,先需要进行步骤如下步骤S 111、调用 SurfaceComposerClient 的本地方法;步骤S112、获取守护进程 ServiceManager ;步骤S113、提交与SurfaceFlinger的通信请求; 步骤S II4、ServiceManager 与 Binder driver 交互查找 SurfaceFlinger ;步骤S115、判断是否存在该服务;在存在时,进行步骤S116 ;否则结束;步骤S116、返回指向 SurfaceFlinger 的 IBinder 对象;步骤S117、访问SurfaceFlinger中的切屏接口。参照图5,如需完成显示屏切换,还需要进行步骤如下步骤S121、调用setFlipScreen函数开始切屏处理;步骤S122、调用setCurrentDisplayld函数指定当前使用的显示屏;步骤S123、调用setTransactionFlags函数设置操作处理标识;步骤S124、调用threadLoop函数判断是否有事件需处理;在需要处理时,进行步骤S125 ;否则重新判断;步骤S125、调用handleTransaction函数进行处理操作;步骤S126、分析操作处理标识判断是否是切屏事件;在是切屏事件时,进行步骤S127 ;否则结束;步骤S127、调用handleRepaint函数重绘需显示内容;步骤S128、调用PostFrameBuffer函数输出显示内容。在另一实施例中,在切换显示屏并通过切换后的显示屏进行内容显示之前,还需要对切换后的显示屏的窗口进行调整。该调整可具体包括获取当前显示屏的宽和高;通知窗口管理器按照当前屏幕的宽和高进行屏幕分配工作;窗口管理器为每个窗口分配其可视边框;以及窗口覆盖等调整。参照图6,本发明还提出一种双屏电子设备的显示系统20—实施例。该显示系统20可包括初始化单元21、屏幕切换单元22以及切换处理单元23 ;该初始化单元21,用于分别为电子设备的两个显示屏建立显示硬件对象;该屏幕切换单元22,用于在需要进行显示屏切换时,调用切屏接口,切换显示硬件对象;该切换处理单元23,用于激活需要进行显示的显示屏,调用需要显示的内容并输出显示;并将另一显示屏设置为待机状态。本实施例中的双屏电子设备的显示系统20可应用于具有Android平台的双屏电子设备。本方法是通过一套显示系统20,对两个显示屏进行控制,以节省资源;同时还有利于用户操作,比如可让用户的操作在显示屏切换后连续地进行下去,在显示屏的切换工程中保证显示内容的一致性,并还可根据切换后显示屏的尺寸对显示内容进行相应的调整。本实施例中在进行显示屏切换时,可在捕捉到切屏事件后,及时完成显示屏的切换工作,并将所要显示的内容根据当前显示屏的分辨率进行适当的调整;可通过控制位映像显示器与输入设备的系统软件,提供了现代图形用户界面所应具备的许多重要特性,不仅负责在不同的应用程序之间分配显示屏区域,同时还将来自与交互式设备的输入信息发送到特定的应用程序中。上述双屏电子设备进行显示屏切换中,将一个显示屏激活进行显示后,可将另一个显示屏设置为待机状态,节省电能。该显示屏的切换可通过设置硬按键或者软按键,实现手动切换;也可通过设置方向传感器或光线传感器等设备,实现自动切换。该双屏电子设备的两个显示屏,可根据不同功用设置为不同类型的显示屏,比如一个显示屏为电子纸显示屏,另一个显示屏为液晶显示屏等,该电子纸适合阅读且耗电量低,液晶显示屏用途广但耗电。上述初始化单元21具体用于通过所述显示硬件对象分别创建本地窗口对象;判断是否创建成功;如果创建成功,激活待显示的显示屏进行显示。上述屏幕切换单元22具体用于调用SurfaceComposerClient的本地方法;获 取守护进程 ServiceManager ;提交与 SurfaceFlinger 的通信请求;ServiceManager 与Binder driver交互查找SurfaceFlinger ;在服务存在时,返回指向SurfaceFlinger的IBinder对象;访问SurfaceFlinger中的切屏接口。上述切换处理单元23具体用于调用setFlipScreen函数开始切屏处理;调用setCurrentDisplayld函数指定当前使用的显示屏;调用setTransactionFlags函数设置操作处理标识;调用threadLoop函数判断是否有事件需处理;在需要处理时,调用handleTransaction函数进行处理操作;分析操作处理标识判断是否是切屏事件;在是切屏事件时,调用handleRepaint函数重绘需显示内容;调用PostFrameBuffer函数输出显示内容。参照图7,上述显示系统20还包括窗口调整单元24,用于对显示屏的窗口进行调整。该调整可具体包括获取当前显示屏的宽和高;通知窗口管理器按照当前屏幕的宽和高进行屏幕分配工作;窗口管理器为每个窗口分配其可视边框;以及窗口覆盖等调整。以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种双屏电子设备的显示方法,其特征在于,包括步骤 分别为电子设备的两个显示屏建立显示硬件对象; 在需要进行显示屏切换时,调用切屏接口,切换显示硬件对象; 激活需要进行显示的显示屏,调用需要显示的内容并输出显示;并将另一显示屏设置为待机状态。
2.根据权利要求I所述的双屏电子设备的显示方法,其特征在于,所述调用需要显示的内容并输出显示的步骤前还包括 对待显示的显示屏窗口进行调整。
3.根据权利要求I或2所述的双屏电子设备的显示方法,其特征在于,所述分别为电子设备的两个显示屏建立显示硬件对象的步骤后还包括 通过所述显示硬件对象分别创建本地窗口对象; 判断是否创建成功; 如果创建成功,激活待显示的显示屏进行显示。
4.根据权利要求3所述的双屏电子设备的显示方法,其特征在于,所述在需要进行显示屏切换时,调用切屏接口,切换显示硬件对象的步骤具体包括 调用 SurfaceComposerClient 的本地方法; 获取守护进程ServiceManager ; 提交与SurfaceFlinger的通信请求;ServiceManager 与 Binder driver 交互查找 SurfaceFlinger ; 在服务存在时,返回指向SurfaceFlinger的IBinder对象; 访问SurfaceFlinger中的切屏接口。
5.根据权利要求4所述的双屏电子设备的显示方法,其特征在于,所述激活需要进行显示的显示屏,调用需要显示的内容并输出显示的步骤具体包括 调用setFlipScreen函数开始切屏处理; 调用SetCurrentDisplayId函数指定当前使用的显示屏; 调用setTransactionFlags函数设置操作处理标识; 调用threadLoop函数判断是否有事件需处理; 在需要处理时,调用handleTransaction函数进行处理操作; 分析操作处理标识判断是否是切屏事件; 在是切屏事件时,调用handleRepaint函数重绘需显示内容; 调用PostFrameBuffer函数输出显示内容。
6.—种双屏电子设备的显不系统,其特征在于,包括 初始化单元,用于分别为电子设备的两个显示屏建立显示硬件对象; 屏幕切换单元,用于在需要进行显示屏切换时,调用切屏接口,切换显示硬件对象;切换处理单元,用于激活需要进行显示的显示屏,调用需要显示的内容并输出显示;并将另一显示屏设置为待机状态。
7.根据权利要求6所述的双屏电子设备的显示系统,其特征在于,所述显示系统还包括 窗口调整单元,用于对待显示的显示屏窗口进行调整。
8.根据权利要求6或7所述的双屏电子设备的显示系统,其特征在于,所述初始化单元具体用于 通过所述显示硬件对象分别创建本地窗口对象; 判断是否创建成功; 如果创建成功,激活待显示的显示屏进行显示。
9.根据权利要求8所述的双屏电子设备的显示系统,其特征在于,所述屏幕切换单元具体用于 调用 SurfaceComposerClient 的本地方法; 获取守护进程ServiceManager ; 提交与SurfaceFlinger的通信请求; ServiceManager 与 Binder driver 交互查找 SurfaceFlinger ; 在服务存在时,返回指向SurfaceFlinger的IBinder对象; 访问SurfaceFlinger中的切屏接口。
10.根据权利要求9所述的双屏电子设备的显示系统,其特征在于,所述切换处理单元具体用于 调用setFlipScreen函数开始切屏处理; 调用SetCurrentDisplayId函数指定当前使用的显示屏; 调用setTransactionFlags函数设置操作处理标识; 调用threadLoop函数判断是否有事件需处理; 在需要处理时,调用handleTransaction函数进行处理操作; 分析操作处理标识判断是否是切屏事件; 在是切屏事件时,调用handleRepaint函数重绘需显示内容; 调用PostFrameBuffer函数输出显示内容。
全文摘要
本发明揭示了一种双屏电子设备的显示方法及系统。该方法可包括步骤分别为电子设备的两个显示屏建立显示硬件对象;在需要进行显示屏切换时,调用切屏接口,切换显示硬件对象;激活需要进行显示的显示屏,调用需要显示的内容并输出显示;并将另一显示屏设置为待机状态。本发明是通过一套显示系统,对两个显示屏进行控制,以节省资源,同时还有利于用户操作。
文档编号G06F3/14GK102768621SQ20111035855
公开日2012年11月7日 申请日期2011年11月14日 优先权日2011年11月14日
发明者刘遥, 匡天君 申请人:深圳市三索科技发展有限公司