一种终端及其显示方法与流程

文档序号:11154236阅读:235来源:国知局
一种终端及其显示方法与制造工艺

本发明实施例属于电子技术领域,尤其涉及一种终端及其显示方法。



背景技术:

随着显示技术的不断普及,在多个屏幕上显示数据以实现多屏互动的需求越来越大。

然而,现有的终端或显示设备,需要重新启动系统或者只有运行终端或显示设备生产厂家撰写的特定应用,才能在两个屏幕上共同显示同一应用的数据,兼容性较差,无法实现任意应用的双屏合一显示功能。



技术实现要素:

本发明实施例提供一种终端及其显示方法,可在无需重启系统的前提下,把任意应用的数据显示到由两个屏幕所合成的一个屏幕上,并且兼容性强可实现任意应用的双屏合一显示功能。

本发明实施例一方面提供一种终端的显示方法,所述安卓设备包括第一屏幕和第二屏幕,所述方法包括:

若桌面启动器检测到双屏合一指令,则触发底层动态卸载所述第一屏幕的第一驱动和所述第二屏幕的第二驱动,加载驱动所述第一屏幕和所述第二屏幕合成显示为第三屏幕的第三驱动;

系统内核通过显示合成模块、界面投递服务和显示管理服务向活动管理服务发送通知;

所述活动管理服务根据所述通知获取预先保持的所述第一屏幕的活动栈和所述第二屏幕的活动栈,并将所述第一屏幕的活动栈和所述第二屏幕的活动栈合成为所述第三屏幕的活动栈;

窗口管理服务根据所述第三屏幕的活动栈生成所述第三屏幕的屏幕信息,并生成放置所述屏幕信息的任务栈;

窗口管理服务根据所述屏幕信息重新对所述第一屏幕和所述第二屏幕合成的第三屏幕进行窗口化计算,以生成所述第三屏幕的显示窗口;

界面投递服务将所述第三屏幕的显示窗口发送给与所述第三屏幕对应的显示合成模块,以通过所述显示合成模块将所述显示窗口合成显示在所述第三屏幕。

本发明实施例另一方面还提供一种终端,所述终端包括第一屏幕和第二屏幕,所述终端包括:

触发单元,用于若桌面启动器检测到双屏合一指令,则触发底层动态卸载所述第一屏幕的第一驱动和所述第二屏幕的第二驱动,加载驱动所述第一屏幕和所述第二屏幕合成显示为第三屏幕的第三驱动;

通知单元,用于系统内核通过显示合成模块、界面投递服务和显示管理服务向活动管理服务发送通知;

活动栈合成单元,用于所述活动管理服务根据所述通知获取预先保持的所述第一屏幕的活动栈和所述第二屏幕的活动栈,并将所述第一屏幕的活动栈和所述第二屏幕的活动栈合成为所述第三屏幕的活动栈;

屏幕信息生成单元,用于窗口管理服务根据所述第三屏幕的活动栈生成所述第三屏幕的屏幕信息,并生成放置所述屏幕信息的任务栈;

显示窗口生成单元,用于窗口管理服务根据所述屏幕信息重新对所述第一屏幕和所述第二屏幕合成的第三屏幕进行窗口化计算,以生成所述第三屏幕的显示窗口;

合成显示单元,用于界面投递服务将所述第三屏幕的显示窗口发送给与所述第三屏幕对应的显示合成模块,以通过所述显示合成模块将所述显示窗口合成显示在所述第三屏幕。

本发明实施例通过提供一种终端及其显示方法,可在无需重启系统的前提下,把任意应用的数据显示到由两个屏幕所合成的一个屏幕上,并且兼容性强可实现任意应用的双屏合一显示功能,不需要更改安卓设备的硬件结构,易于实现,适于广泛推广使用。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一提供的终端的显示方法的基本流程框图;

图2是本发明实施例二提供的终端的显示方法的基本流程框图;

图3是本发明实施例三提供的终端的结构框图;

图4是本发明实施例四提供的终端的结构框图;

图5是本发明实施例五提供的终端的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含一系列步骤或单元的过程、方法或系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同对象,而非用于描述特定顺序。

本发明实施例所提供的终端的显示方法及终端,其方法的应用场景以及终端设备包括且不限于IOS系统,Android系统,windows系统以及搭载这些系统的终端或设备。以下实施例以Android系统及搭载Android系统的终端为描述对象作为实施例。

实施例一:

如图1所示,本实施例提供一种终端的显示方法,所述终端包括第一屏幕和第二屏幕。

本实施例中的双屏合一显示具体是指:使原本单独运行不同应用、显示不同应用数据的两个屏幕,合成为一个大屏幕共同显示同一应用的应用数据。例如,使第一屏幕和第二屏幕在物理结构上拼接合成为一个大屏幕,所述大屏幕的尺寸等于第一屏幕的尺寸和第二屏幕的尺寸之和,运行中国象棋应用,使第一屏幕显示象棋棋盘的一半,第二屏幕显示象棋棋盘的另一半,以实现两个屏幕共同显示整个象棋棋盘的效果,相比于在两个屏幕上单独运行中国象棋应用,本实施例所提供的方法可实现屏幕扩展,使应用数据显示在两个屏幕拼接合成的一个较大的屏幕上。

在具体应用中,本发明实施例所提供的终端的显示方法不仅可以应用于包括两个屏幕的安卓设备,还可以应用于包括多个屏幕的安卓设备,以使多个屏幕共同显示同一个应用的数据,以实现屏幕扩展。例如,三个屏幕共同显示包括三页文字的文章,则第一屏幕显示第一页文字、第二屏幕显示第二页文字、第三屏幕显示第三页文字。

所述方法包括:

步骤S101:若桌面启动器检测到双屏合一指令,则触发底层动态卸载所述第一屏幕的第一驱动和所述第二屏幕的第二驱动,并加载驱动所述第一屏幕和所述第二屏幕合成显示为第三屏幕的第三驱动。

在具体应用中,双屏合一指令由用户通过安卓设备的用户界面输入。

在一实施例中,步骤S101中的若桌面启动器检测到双屏合一指令包括:

桌面启动器接收用户输入的双屏合一指令,根据所述双屏合一指令,启动相应的安卓安装包(APK,AndroidPackage)。

在本实施例中,第一驱动、第二驱动和第三驱动分别用于驱动对应的第一屏幕、第二屏幕和第三屏幕显示应用数据。

步骤S102:系统内核(kernel)通过显示合成(HWComposer)模块、界面投递(Surfaceflinger)服务和显示管理服务向活动管理服务发送通知。

步骤S103:所述活动管理服务根据所述通知获取预先保持的所述第一屏幕的活动栈(ActivityStack)和所述第二屏幕的活动栈,并将所述第一屏幕的活动栈和所述第二屏幕的活动栈合成为所述第三屏幕的活动栈;

本实施例中,活动栈(ActivityStack)是指用于放置和管理一个或多个相关联的Activity的堆栈(Stack),每次启动的新Activity都将被添加到堆栈中,Activity相当于是被记录在活动栈中,可以被查看和调出,包括一组相关联的Activity的活动栈相当于是一个任务(task)。

在一实施例中,步骤S103包括:

所述活动管理服务根据所述加载消息,调用其预先注册的回调函数加载显示函数(onDisplayAdded),将所述第一屏幕的活动栈和所述第二屏幕的活动栈合成为所述第三屏幕的活动栈;

在具体应用中,将所述第一屏幕的活动栈和所述第二屏幕的活动栈合成为所述第三屏幕的活动栈,具体可以按照活动栈中数据的顺序依次排列第一屏幕的活动栈数据和第二屏幕的活动栈数据组成一个新的活动栈,该新的活动栈即为第三屏幕的活动栈,也可以将第一屏幕的活动栈数据按次序排在第二屏幕的活动栈数据之后。

步骤S104:窗口管理服务根据所述第三屏幕的活动栈生成所述第三屏幕的屏幕信息(DisplayContent),并生成放置所述屏幕信息的任务栈(TaskStack)。

本实施例中,任务栈(TaskStack)是指用于管理和放置一个或多个任务(Task)的堆栈(Stack),任务(Task)将相关联的Activity组合在一起,然后放置在堆栈中。

在具体应用中,所述屏幕信息具体是指屏幕的分辨率、display id等信息。

在一实施例中,步骤S104具体包括:

所述窗口管理服务调用其回调函数加载显示函数(onDisplayAdded),根据所述第三屏幕的活动栈生成所述第三屏幕的屏幕信息和放置所述屏幕信息的任务栈。

步骤S105:窗口管理服务根据所述屏幕信息重新对所述第一屏幕和所述第二屏幕合成的第三屏幕进行窗口化计算,以生成所述第三屏幕的显示窗口(surface)。

在具体应用中,对所述第一屏幕和所述第二屏幕进行窗口化计算,具体是指重新计算第一屏幕和第二屏幕的显示窗口(windowstate)的显示大小、显示位置等。

在一实施例中,步骤S105具体包括:

窗口管理服务调用其performLayoutAndPlaceSurfacesLockedLoop函数,以根据所述屏幕信息重新对所述第一屏幕和所述第二屏幕进行窗口化计算,以生成所述第三屏幕的显示窗口(surface)。

步骤S106:界面投递服务将所述第三屏幕的显示窗口发送给与所述第三屏幕对应的显示合成模块,以通过所述显示合成模块将所述显示窗口合成显示在所述第三屏幕。

在一实施例中,步骤S106具体包括:

界面投递服务的层结构(layerstack)将所述第三屏幕的显示窗口发送给与所述第三屏幕对应的显示合成模块,以通过所述显示合成模块将所述显示窗口合成显示在所述第三屏幕。

在一实施例中,步骤S102之前包括:

活动管理服务预先通过登记显示接听器(registerDisplayListener)注册热拔插事件的回调函数删除显示函数(onDisplayRemoved)和回调函数加载显示函数(onDisplayAdded)。

本发明实施例通过提供一种终端的显示方法,可在无需重启系统的前提下,把任意应用的数据显示到由两个屏幕所合成的一个屏幕上,并且兼容性强可实现任意应用的双屏合一显示功能,不需要更改安卓设备的硬件结构,易于实现,适于广泛推广使用。

实施例二:

如图2所示,在本实施例中,所述通知为热拔插事件;步骤S102具体包括:

步骤S201:系统内核向显示合成模块发送一个热拔插事件,所述热拔插事件包括卸载消息(remove)和加载消息(add),其中,所述卸载消息用于通知其他线程所述底层动态正在卸载所述第一驱动和所述第二驱动,所述加载消息用于通知其他线程所述底层动态正在加载所述第三驱动;

步骤S202:所述显示合成模块调用钩子函数(hook_hotplug)将所述热拔插事件发送给界面投递服务;

步骤S203:所述界面投递服务接收到所述热插拔事件,则调用其回调函数热拨插事件接收函数(onHotplugReceived)获取所述第三屏幕的屏幕信息并将所述热插拔事件发送给显示管理服务。

在具体应用中,显示管理服务接收到卸载消息后,会通过其显示事件接收器(DisplayEventReceiver)调用活动管理服务预先注册的回调函数,然后使活动管理服务根据其预先注册的回调函数执行相应的任务。

步骤S204:所述显示管理服务将所述热拔插事件发送给所述活动管理服务(AMS,ActivityManagerService);

步骤S205:所述活动管理服务根据所述卸载消息调用其预先注册的回调函数删除显示函数,将所述第一屏幕的活动栈保持在第一临时链表中,将所述第二屏幕的活动栈保持在第二临时链表中。

在一实施例中,步骤S205之后还包括:

所述显示管理服务将所述加载消息发送给所述窗口管理服务(WindowManagerServier);

所述窗口管理服务根据所述加载消息调用其回调函数删除显示函数,清除与该窗口管理服务对应的任务栈(TaskStack);

所述窗口管理服务调用其窗口锁定函数,锁定所述第一屏幕的显示窗口(surface)和所述第二屏幕的显示窗口,以停止继续刷新所述第一屏幕和所述第二屏幕所显示的数据。

在具体应用中,所述屏幕信息具体是指屏幕的分辨率、display id等信息。

本发明实施例通过发送热拔插事件来通知其他服务“底层动态卸载所述第一屏幕的第一驱动和所述第二屏幕的第二驱动,并加载驱动所述第一屏幕和所述第二屏幕合成显示为第三屏幕的第三驱动”的事件,可以使其他服务及时获知当前的屏幕状态,然后及时启动相应的任务,提高了系统响应速度,缩短了屏幕合成时间。

实施例三:

如图3所示,本实施例所提供的终端10,其包括第一屏幕和第二屏幕,还包括:

触发单元101,用于若桌面启动器检测到双屏合一指令,则触发底层动态卸载所述第一屏幕的第一驱动和所述第二屏幕的第二驱动,加载驱动所述第一屏幕和所述第二屏幕合成显示为第三屏幕的第三驱动;

通知单元102,用于系统内核通过显示合成模块、界面投递服务和显示管理服务向活动管理服务发送通知;

活动栈合成单元103,用于所述活动管理服务根据所述通知获取预先保持的所述第一屏幕的活动栈和所述第二屏幕的活动栈,并将所述第一屏幕的活动栈和所述第二屏幕的活动栈合成为所述第三屏幕的活动栈;

屏幕信息生成单元104,用于窗口管理服务根据所述第三屏幕的活动栈生成所述第三屏幕的屏幕信息,并生成放置所述屏幕信息的任务栈;

显示窗口生成单元105,用于窗口管理服务根据所述屏幕信息重新对所述第一屏幕和所述第二屏幕合成的第三屏幕进行窗口化计算,以生成所述第三屏幕的显示窗口;

合成显示单元106,用于界面投递服务将所述第三屏幕的显示窗口发送给与所述第三屏幕对应的显示合成模块,以通过所述显示合成模块将所述显示窗口合成显示在所述第三屏幕。

在一实施例中,触发单元101还用于桌面启动器接收用户输入的双屏合一指令,根据所述双屏合一指令,启动相应的安卓安装包(APK,AndroidPackage),所述安卓安装包的底层动态卸载所述第一屏幕的第一驱动和所述第二屏幕的第二驱动,并加载驱动所述第一屏幕和所述第二屏幕合成显示为第三屏幕的第三驱动。

在一实施例中,活动栈合成单元103具体用于所述活动管理服务根据所述加载消息,调用其预先注册的回调函数加载显示函数,将所述第一屏幕的活动栈和所述第二屏幕的活动栈合成为所述第三屏幕的活动栈;

在一实施例中,屏幕信息生成单元104,具体用于所述窗口管理服务调用其回调函数加载显示函数,根据所述第三屏幕的活动栈生成所述第三屏幕的屏幕信息和放置所述屏幕信息的任务栈。

在一实施例中,显示窗口生成单元105,具体用于窗口管理服务调用其窗口锁定Loop函数,以根据所述屏幕信息重新对所述第一屏幕和所述第二屏幕进行窗口化计算,以生成所述第三屏幕的显示窗口(surface)。

在一实施例中,合成显示单元106,具体用于界面投递服务的层结构(layerstack)将所述第三屏幕的显示窗口发送给与所述第三屏幕对应的显示合成模块,以通过所述显示合成模块将所述显示窗口合成显示在所述第三屏幕。

在一实施例中,所述终端还包括:

回调函数注册单元,用于活动管理服务预先通过登记显示接听器(registerDisplayListener)注册热拔插事件的回调函数删除显示函数和回调函数加载显示函数。

本发明实施例通过提供一种终端的显示方法,可在无需重启系统的前提下,把任意应用的数据显示到由两个屏幕所合成的一个屏幕上,并且兼容性强可实现任意应用的双屏合一显示功能,不需要更改安卓设备的硬件结构,易于实现,适于广泛推广使用。

实施例四:

如图4所示,在本实施例中,所述通知为热拔插事件;通知单元102具体包括:

第一热拔插事件发送单元201,用于系统内核向显示合成模块发送一个热拔插事件,所述热拔插事件包括卸载消息和加载消息,其中,所述卸载消息用于通知其他线程所述底层动态正在卸载所述第一驱动和所述第二驱动,所述加载消息用于通知其他线程所述底层动态正在加载所述第三驱动;

第二热拔插事件发送单元202,用于所述显示合成模块调用钩子函数将所述热拔插事件发送给界面投递服务;

屏幕信息获取单元203,用于所述界面投递服务接收到所述热插拔事件,则调用其回调函数热拨插事件接收函数获取所述第三屏幕的屏幕信息并将所述热插拔事件发送给显示管理服务;

第三热拔插事件发送单元204,用于所述显示管理服务将所述热拔插事件发送给所述活动管理服务;

活动栈保持单元205,用于所述活动管理服务根据所述卸载消息调用其预先注册的回调函数删除显示函数,将所述第一屏幕的活动栈保持在第一临时链表中,将所述第二屏幕的活动栈保持在第二临时链表中。

在具体应用中,活动栈保持单元,具体用于显示管理服务接收到卸载消息后,通过其显示事件接收器(DisplayEventReceiver)调用活动管理服务预先注册的回调函数,然后使活动管理服务根据预先注册的回调函数执行相应的任务。

在一实施例中,通知单元102具体还包括:

第四热拔插事件发送单元,用于所述显示管理服务将所述加载消息发送给所述窗口管理服务;

任务栈清除单元,用于所述窗口管理服务根据所述加载消息调用其回调函数删除显示函数,清除与该窗口管理服务对应的任务栈;

锁屏单元,用于所述窗口管理服务调用其窗口锁定函数,锁定所述第一屏幕的显示窗口和所述第二屏幕的显示窗口,以停止继续刷新所述第一屏幕和所述第二屏幕所显示的数据。

本发明实施例通过发送热拔插事件来通知其他服务“底层动态卸载所述第一屏幕的第一驱动和所述第二屏幕的第二驱动,并加载驱动所述第一屏幕和所述第二屏幕合成显示为第三屏幕的第三驱动”的事件,可以使其他服务及时获知当前的屏幕状态,然后及时启动相应的任务,提高了系统响应速度,缩短了屏幕合成时间。

实施例五:

如图5所示,本实施例所提供的终端100,其包括:

处理器(processor)110,通信接口(Communications Interface)120,存储器(memory)130,总线140,第一屏幕150和第二屏幕160。

处理器110,通信接口120,存储器130,距离检测单元150和显示单元160通过总线140完成相互间的通信。

通信接口120,用于与外界设备,例如,个人电脑、智能手机等通信。

第一屏幕150和第二屏幕160在物理结构上相互并排拼接设置,用于共同显示一个应用数据,以实现屏幕扩展功能。

处理器110,用于执行程序131;

具体地,程序131可以包括程序代码,所述程序代码包括计算机操作指令。

处理器110可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。

存储器130,用于存放程序131。存储器130可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。程序131具体可以包括:

触发单元1311,用于若桌面启动器检测到双屏合一指令,则触发底层动态卸载所述第一屏幕的第一驱动和所述第二屏幕的第二驱动,加载驱动所述第一屏幕和所述第二屏幕合成显示为第三屏幕的第三驱动;

通知单元1312,用于系统内核通过显示合成模块、界面投递服务和显示管理服务向活动管理服务发送通知;

活动栈合成单元1313,用于所述活动管理服务根据所述通知获取预先保持的所述第一屏幕的活动栈和所述第二屏幕的活动栈,并将所述第一屏幕的活动栈和所述第二屏幕的活动栈合成为所述第三屏幕的活动栈;

屏幕信息生成单元1314,用于窗口管理服务根据所述第三屏幕的活动栈生成所述第三屏幕的屏幕信息,并生成放置所述屏幕信息的任务栈;

显示窗口生成单元1315,用于窗口管理服务根据所述屏幕信息重新对所述第一屏幕和所述第二屏幕合成的第三屏幕进行窗口化计算,以生成所述第三屏幕的显示窗口;

合成显示单元1316,用于界面投递服务将所述第三屏幕的显示窗口发送给与所述第三屏幕对应的显示合成模块,以通过所述显示合成模块将所述显示窗口合成显示在所述第三屏幕。

在一实施例中,程序131具体还可以包括:

第一热拔插事件发送单元,用于系统内核向显示合成模块发送一个热拔插事件,所述热拔插事件包括卸载消息和加载消息,其中,所述卸载消息用于通知其他线程所述底层动态正在卸载所述第一驱动和所述第二驱动,所述加载消息用于通知其他线程所述底层动态正在加载所述第三驱动;

第二热拔插事件发送单元,用于所述显示合成模块调用钩子函数将所述热拔插事件发送给界面投递服务;

屏幕信息获取单元,用于所述界面投递服务接收到所述热插拔事件,则调用其回调函数热拨插事件接收函数获取所述第三屏幕的屏幕信息并将所述热插拔事件发送给显示管理服务;

第三热拔插事件发送单元,用于所述显示管理服务将所述热拔插事件发送给所述活动管理服务;

活动栈保持单元,用于所述活动管理服务根据所述卸载消息调用其预先注册的回调函数删除显示函数,将所述第一屏幕的活动栈保持在第一临时链表中,将所述第二屏幕的活动栈保持在第二临时链表中。

在一实施例中,程序131具体还可以包括:

第四热拔插事件发送单元,用于所述显示管理服务将所述加载消息发送给所述窗口管理服务;

任务栈清除单元,用于所述窗口管理服务根据所述加载消息调用其回调函数删除显示函数,清除与该窗口管理服务对应的任务栈;

锁屏单元,用于所述窗口管理服务调用其窗口锁定函数,锁定所述第一屏幕的显示窗口和所述第二屏幕的显示窗口,以停止继续刷新所述第一屏幕和所述第二屏幕所显示的数据。

在一实施例中,所述活动栈合成单元具体用于所述活动管理服务根据所述加载消息,调用其预先注册的回调函数加载显示函数,将所述第一屏幕的活动栈和所述第二屏幕的活动栈合成为所述第三屏幕的活动栈;

所述屏幕信息生成单元具体用于所述窗口管理服务调用其回调函数加载显示函数,根据所述第三屏幕的活动栈生成所述第三屏幕的屏幕信息和放置所述屏幕信息的任务栈。

在一实施例中,程序131具体还可以包括:

回调函数注册单元,用于活动管理服务预先通过登记显示接听器注册热拔插事件的回调函数删除显示函数和回调函数加载显示函数。

在一实施例中,程序131具体还可以包括:

本发明所有实施例中的单元,可以通过通用集成电路,例如CPU(Central Processing Unit,中央处理器),或通过ASIC(Application Specific Integrated Circuit,专用集成电路)来实现。

本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。

本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1