发明内容
本公开的一个目的在于提供一种更为通用的、对带屏幕设备的要求较低的多屏显示方案。
根据本公开的第一个方面,提出了一种多屏显示方法,包括:与一个或多个显示屏分别连接;为所连接的每个显示屏维护一个窗口队列;将需要在一个或多个显示屏中显示的应用程序窗口放入对应的窗口队列;以及将窗口队列中的应用程序窗口所对应的界面显示到对应的显示屏上。
可选地,将需要在一个或多个显示屏中显示的应用程序窗口放入对应的窗口队列的步骤包括:将属于同一应用程序的应用程序窗口放入相同的窗口队列;或者将属于同一应用程序的两个不同的应用程序窗口放入于不同的窗口队列。
可选地,多屏显示方法,还包括:响应于用户针对第一显示屏执行的用于将第一显示屏上的应用程序界面移动到第二显示屏上的第一操作,将应用程序界面对应的应用程序窗口放入第二显示屏对应的窗口队列。
可选地,第一操作为用户通过第一触控方式将应用程序界面划出第一显示屏边缘的手势操作,第二显示屏为划动方向上的显示屏。
可选地,多屏显示方法,还包括:检测第一触控方式的划动方向;基于划动方向确定第二显示屏。
可选地,基于划动方向确定第二显示屏的步骤包括:基于多个显示屏的位置信息,将位于第一显示屏的划动方向上的显示屏确定为第二显示屏;或者基于多个显示屏的位置信息,将位于第一显示屏的划动方向上、且被用户执行了与划动方向一致的手势操作的显示屏确定为第二显示屏。
可选地,多屏显示方法,还包括:响应于用户针对显示屏执行的用于将显示屏上的应用程序界面移除的第二操作,检测应用程序界面是否为来源于其他显示屏的克隆界面;在检测到应用程序界面是克隆界面的情况下,在显示屏对应的窗口队列中移除应用程序界面对应的应用程序窗口,并且/或者在检测到应用程序界面不是克隆界面的情况下,触发当前应用退出,并切换到前一个应用。
可选地,第二操作为用户通过第二触控方式将应用程序界面划出显示屏边缘的手势操作。
可选地,多屏显示方法,还包括:在检测到应用程序界面不是克隆界面的情况下,将其他显示应用程序界面的显示屏对应的窗口队列中与应用程序界面对应的应用程序窗口移除。
可选地,多屏显示方法,还包括:响应于用户针对第一显示屏上的应用程序界面执行的第三操作,将第一显示屏对应的窗口队列中前一个应用程序窗口显示到第一显示屏上,并将应用程序界面对应的应用程序窗口放入第二显示屏对应的窗口队列。
可选地,第三操作为用户通过第三触控方式将应用程序界面划出第一显示屏边缘的手势操作,第二显示屏为划动方向上的显示屏。
可选地,多屏显示方法,还包括:响应于用户针对显示屏执行的第四操作,在显示屏上显示所有启动的应用程序界面。
可选地,第四操作为用户使用三指或三指以上在显示屏上张开的手势操作。
可选地,在显示屏上显示所有启动的应用程序界面的步骤包括:将显示屏对应的窗口队列中所有应用程序窗口显示在显示屏上。
可选地,多屏显示方法,还包括:响应于用户针对其中一个应用程序界面执行的点击操作,将选中的应用程序界面切换显示到显示屏上。
可选地,多屏显示方法,还包括:响应于用户将第一应用程序界面中的页面元素移动到第二应用程序界面中,识别页面元素,并基于识别结果指令第二应用程序界面对应的应用程序执行与页面元素相关的预定操作。
可选地,第一应用程序界面和第二应用程序界面显示在同一显示屏,或者,第一应用程序界面和第二应用程序界面显示在不同的显示屏。
可选地,第一应用程序界面为页面浏览器,页面元素为图片,第二应用程序界面为播放器,识别页面元素并基于识别结果指令第二应用程序界面对应的应用程序执行与页面元素相关的预定操作的步骤包括:识别图片中的文字和/或人物;指令播放器播放与识别结果一致的多媒体资源。
可选地,窗口队列为先入后出队列。
可选地,多屏显示方法,还包括:为每个窗口队列维护任务信息和令牌信息,其中,任务信息用于表征窗口队列中的应用程序窗口之间的组合关系,令牌信息用于表征窗口队列中的应用程序窗口的类别。
可选地,将窗口队列中的应用程序窗口所对应的界面显示到对应的显示屏上的步骤包括:将与应用程序窗口对应的视图对象绘制到应用程序窗口所关联的画布上;以及将绘制好的画布渲染到对应的显示屏上。
可选地,多屏显示方法,还包括:为每个视图对象维护显示屏列表,显示屏列表用于表征视图对象需要绘制到的显示屏。
可选地,多屏显示方法,还包括:响应于检测到用户针对显示屏执行的操作,对操作针对的应用程序界面进行截屏,并显示截屏内容,以使得用户能够拖动截屏内容。
根据本公开的第二个方面,还提出了一种多屏显示装置,包括:连接模块,用于与一个或多个显示屏分别连接;窗口队列维护模块,用于为所连接的每个显示屏维护一个窗口队列,将需要在一个或多个显示屏中显示的应用程序窗口放入对应的窗口队列;以及控制显示模块,用于将窗口队列中的应用程序窗口所对应的界面显示到对应的显示屏上。
可选地,窗口队列维护模块将属于同一应用程序的应用程序窗口放入相同的窗口队列,或者将属于同一应用程序的两个不同的应用程序窗口放入于不同的窗口队列。
可选地,窗口队列维护模块响应于用户针对第一显示屏执行的用于将第一显示屏上的应用程序界面移动到第二显示屏上的第一操作,将应用程序界面对应的应用程序窗口放入第二显示屏对应的窗口队列。
可选地,第一操作为用户通过第一触控方式将应用程序界面划出第一显示屏边缘的手势操作,第二显示屏为划动方向上的显示屏。
可选地,多屏显示装置还包括:方向检测模块,用于检测第一触控方式的划动方向;和确定模块,用于基于划动方向确定第二显示屏。
可选地,确定模块基于多个显示屏的位置信息,将位于第一显示屏的划动方向上的显示屏确定为第二显示屏,或者确定模块基于多个显示屏的位置信息,将位于第一显示屏的划动方向上、且被用户执行了与划动方向一致的手势操作的显示屏确定为第二显示屏。
可选地,多屏显示装置还包括:界面检测模块和切换模块,界面检测模块用于响应于用户针对显示屏执行的用于将显示屏上的应用程序界面移除的第二操作,检测应用程序界面是否为来源于其他显示屏的克隆界面,在界面检测模块检测到应用程序界面是克隆界面的情况下,窗口队列维护模块在显示屏对应的窗口队列中移除应用程序界面对应的应用程序窗口,并且/或者在界面检测模块检测到应用程序界面不是克隆界面的情况下,切换模块触发当前应用退出,并切换到前一个应用。
可选地,第二操作为用户通过第二触控方式将应用程序界面划出显示屏边缘的手势操作。
可选地,窗口队列维护模块在检测到应用程序界面不是克隆界面的情况下,将其他显示应用程序界面的显示屏对应的窗口队列中与应用程序界面对应的应用程序窗口移除。
可选地,窗口队列维护模块响应于用户针对第一显示屏上的应用程序界面执行的第三操作,将第一显示屏对应的窗口队列中前一个应用程序窗口显示到第一显示屏上,并将应用程序界面对应的应用程序窗口放入第二显示屏对应的窗口队列。
可选地,第三操作为用户通过第三触控方式将应用程序界面划出第一显示屏边缘的手势操作,第二显示屏为划动方向上的显示屏。
可选地,控制显示模块响应于用户针对显示屏执行的第四操作,在显示屏上显示所有启动的应用程序界面。
可选地,第四操作为用户使用三指或三指以上在显示屏上张开的手势操作。
可选地,控制显示模块将显示屏对应的窗口队列中所有应用程序窗口显示在显示屏上。
可选地,控制显示模块响应于用户针对其中一个应用程序界面执行的点击操作,将选中的应用程序界面切换显示到显示屏上。
可选地,多屏显示装置还包括识别模块,用于响应于用户将第一应用程序界面中的页面元素移动到第二应用程序界面中,识别页面元素,并基于识别结果指令第二应用程序界面对应的应用程序执行与页面元素相关的预定操作。
可选地,第一应用程序界面和第二应用程序界面显示在同一显示屏,或者,第一应用程序界面和第二应用程序界面显示在不同的显示屏。
可选地,第一应用程序界面为页面浏览器,页面元素为图片,第二应用程序界面为播放器,识别模块识别图片中的文字和/或人物,并指令播放器播放与识别结果一致的多媒体资源。
可选地,窗口队列为先入后出队列。
可选地,多屏显示装置还包括:信息维护模块,用于为每个窗口队列维护任务信息和令牌信息,其中,任务信息用于表征窗口队列中的应用程序窗口之间的组合关系,令牌信息用于表征窗口队列中的应用程序窗口的类别。
可选地,控制显示模块将与应用程序窗口对应的视图对象绘制到应用程序窗口所关联的画布上,并将绘制好的画布渲染到对应的显示屏上。
可选地,多屏显示装置还包括:显示屏列表维护模块,用于为每个视图对象维护显示屏列表,显示屏列表用于表征视图对象需要绘制到的显示屏。
可选地,多屏显示装置还包括:截屏模块,用于响应于检测到用户针对显示屏执行的操作,对操作针对的应用程序界面进行截屏,并显示截屏内容,以使得用户能够拖动截屏内容。
根据本公开的第三个方面,还提出了一种多屏显示系统,包括:一个或多个显示屏;和至少一个电子设备,电子设备用于执行如本公开第一个方面述及的方法。
根据本公开的第四个方面,还提出了一种具有预定空间的舱体,适于容纳用户,包括:一个或多个显示屏;和至少一个电子设备,电子设备用于执行如本公开第一个方面述及的方法。
可选地,空间舱为车辆电子座舱。
可选地,显示屏包括如下至少一种:中控操作屏;抬头显示屏;流媒体后视镜;以及位于后排座椅的娱乐显示屏。
根据本公开的第五个方面,还提出了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如本公开第一个方面述及的方法。
根据本公开的第五个方面,还提出了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如本公开第一个方面述及的方法。
本公开的多屏显示方案可以视为一种“一芯多屏”的方案,只需要一个控制中心,如可以通过一个内置了支持本公开的多屏显示方案的系统架构的设备,连接多个显示屏,就可以实现多屏显示及交互,实现过程不需要依赖带屏幕设备上的硬件资源/软件资源,因此本公开所连接的显示屏可以是带屏幕设备,成本优势明显。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
【方案概述】
本公开提出了一种多屏显示方案,可以通过一个设备来实现多个屏幕的显示及多屏间的交互。具体地,多个屏幕内可以独立显示应用和操作,互不干扰。并且,多个屏幕之间可以共享和移动应用内容,例如,可以通过特定手势将屏幕的数据内容在不同屏幕之间拖动与共享。
本公开的多屏显示方案可以应用于多个显示屏共存的空间环境,以为处于该空间环境中的用户提供多屏显示及多屏交互功能。此处述及的空间环境可以是具有预定空间的、适于容纳用户的设备,如电子座舱。
图1是示出了本公开应用于车辆电子座舱环境下的示意图。其中,车辆电子座舱中可以包括多个显示屏,如可以包括但不限于中控操作屏、抬头显示屏(HUD)、流媒体后视镜以及位于后排座椅的娱乐显示屏等等。
本公开可以将这些显示屏连接起来,在这多个显示屏内独立显示应用,用户可以独立操作不同显示屏上的应用。并且,用户可以通过预定方式(如触控方式、语音方式),在这多个显示屏间实现屏幕数据内容的移动与共享。如图1所示,多个用户可以在不同的显示屏上独立启动应用和操作,并且,用户可以基于单指/多指手势在不同显示屏间进行共享与交互,如可以在多个显示屏之间拖动和共享屏幕数据。其中,多屏交互操作的实现可以借助于IOM框架,IOM框架用于识别显示屏上的图像数据,关于IOM框架将在下文展开说明,此处暂不赘述。
如图1所示,本公开还可以支持手机、IPAD等移动设备上的屏幕数据显示到车辆电子座舱中的各个显示屏。例如,在用户使用的手机、IPAD等移动设备支持本公开的多屏显示方案,如移动设备中安装了能够执行本公开的多屏显示方案的系统架构的情况下,可以将移动设备作为控制中心,将车辆电子座舱中的多个显示屏连接起来,用户可以将移动设备的屏幕上的数据内容通过拖拽等特定手势操作分享到各个车载显示屏上。另外,移动设备也可以是支持现有投影方案(如Miracast、Airplay)的设备,本公开也可以支持这种设备上的屏幕数据显示到各个车载显示屏。
本公开的多屏显示方案可以视为一种“一芯多屏”的方案,不同于业界已有的多屏显示方案需要多个设备+多个屏幕,本公开可以只需要一个电子设备,如可以通过一个内置了支持本公开的多屏显示方案的系统架构的设备,连接多个显示屏,就可以实现多屏显示及交互,实现过程不需要依赖带屏幕设备上的硬件资源/软件资源,因此所连接的显示屏可以不是带屏幕设备,成本优势明显。
下面就主要从多屏显示原理、支持的交互功能以及实现过程中具体的数据传输和控制流程这三个方面进行说明。
【多屏显示原理】
图2是示出了根据本公开一实施例的多屏显示方法的示意性流程图。图2所示的方法可以由控制中心执行,如可以由单个设备执行,该设备可以具有显示屏,也可以不具有显示屏。并且,该设备上可以安装多个应用程序。
如图2所示,在步骤S110,与一个或多个显示屏分别连接。
显示屏可以是仅提供界面显示及接收用户输入事件的功能的屏幕,如支持触控的显示屏。此处主要是与一个或多个显示屏分别建立通信连接,以为后续将屏幕数据渲染到特定的显示屏上,并且/或者,将特定显示屏上显示的屏幕数据移动或分享到其他显示屏,提供通信支持。另外,在与多个显示屏分别连接后,还可以获取各个显示屏的分辨率、屏幕尺寸等相关信息,以便在将屏幕数据渲染到显示屏上时,可以参考该显示屏的分辨率、屏幕尺寸等相关信息。
在步骤S120,为所连接的每个显示屏维护一个窗口队列。
在步骤S130,将需要在一个或多个显示屏中显示的应用程序窗口放入对应的窗口队列。
窗口队列中的应用程序窗口(window)为需要在对应显示屏上显示的窗口。每个显示屏上可以具有多个应用程序窗口。其中,应用程序窗口可以是用于在其中绘制状态栏、导航栏、壁纸等系统级应用窗口,也可以是播放器、导航地图、浏览器等第三方应用窗口。
窗口队列中的应用程序窗口可以是在应用启动时就显示在该显示屏上的窗口,也可以是从其他显示屏移动过来的窗口,还可以是从其他显示屏分享过来的窗口(克隆窗口)。
在步骤S140,将窗口队列中的应用程序窗口所对应的界面显示到对应的显示屏上。
每个应用程序窗口对应一个Surface(画布),可以将与应用程序窗口对应的视图对象(view)绘制到应用程序窗口所对应的画布上,并将绘制好的画布渲染到对应的显示屏上。可选地,还可以为每个视图对象维护一个显示屏列表,显示屏列表用于表征视图对象需要绘制到的显示屏。由此,可以根据显示屏列表将视图对象绘制到一个或多个显示屏上。
窗口队列中的应用程序窗口之间具有预定的排序信息,排序在前的应用程序窗口会覆盖排序在后的应用程序窗口。并且,应用程序窗口还具有预定的布局信息。因此,在将将窗口队列中的应用程序窗口所对应的界面显示到对应的显示屏上时,并不是所有的应用程序窗口都会被用户可视化地看到。作为示例,可以基于应用程序窗口的布局信息和排序信息,将绘制好的画布渲染到对应的显示屏上。可选地,在将画布渲染到对应的显示屏上时,还可以参考应用程序窗口的窗口动画配置信息,以使得在变换窗口时显示预定的窗口动画效果。
窗口队列可以是先入后出队列。如图3所示,可以为每个显示屏维护一个stack数据结构(可以由下文述及的WMS/DPMS执行),可以将应用程序窗口放入指定的stack,以实现应用程序窗口在对应的显示屏上显示的需求。其中,图3示出的是同一应用程序A中的两个不同应用程序窗口放入不同的stack,以在不同的显示屏上显示。
作为示例,还可以为每个窗口队列维护任务信息和令牌信息。任务信息用于表征窗口队列中的应用程序窗口之间的组合关系,任务信息可以包括一个或多个任务(Task),每个任务用于表征需要协作完成某项功能的一个或多个应用程序窗口。令牌信息用于表征窗口队列中的应用程序窗口的类别。
综上,本公开是从应用程序界面的底层实现的角度出发,为每个所连接的显示屏维护一个窗口队列,通过将需要在一个或多个显示屏中显示的应用程序窗口放入对应的窗口队列,实现多屏显示。由此,本公开可以视为一种“一芯多屏”的显示方案,可以通过一个控制中心实现多个显示屏的显示。
可选地,控制中心还可以连接显示屏以外的功能设备(如音响),根据显示屏上的指令控制这些设备。例如,控制中心连接到音响等其它设备,根据显示屏上发出的指令,对音响等进行控制,也就是说,虽然显示屏上在显示播放器界面,但是音乐不是显示屏本身发出的,而是汽车音响发出的。
作为本公开的一个示例,可以仅通过一个电子设备,连接多个显示屏,实现多屏显示。例如,该设备上可以安装一个或多个应用程序,在启动设备上所安装的应用程序时,可以将应用程序界面显示在设备所连接的任意一个或多个显示屏上,用户可以通过对显示屏上显示的界面执行点击等操作,来操作应用程序。另外,本公开还可以支持屏幕数据在不同显示屏之间移动与共享、以及其他多种交互功能。
【支持的交互功能】
如图4所示,作为示例,本公开可以实现如下功能。
1、不同的显示屏可以独立显示应用和交互
可以将属于同一应用程序的应用程序窗口放入相同的窗口队列,以使得不同的显示屏可以独立显示应用和交互。如图4中上半部分所示,屏幕A可以显示播放器应用,屏幕B可以显示地图应用,两个屏幕可以独立显示和操作,互不影响。
另外,本公开也支持属于同一应用程序的不同界面显示在不同的显示屏上。例如,可以将属于同一应用程序的两个不同的应用程序窗口放入不同的窗口队列,以实现同一应用内的不同界面显示在不同的显示屏上。如图5所示,可以支持单个应用将不同的Page放入不同的屏幕中显示和操作,其中,图5所示的Page可以是指应用程序窗口。
2、可以在多个显示屏之间移动和共享屏幕数据
为了便于用户将屏幕数据在多个显示屏之间移动和分享。可以响应于检测到用户针对述显示屏执行的操作(通过触控方式实现的操作,如可以是手势操作),对操作针对的应用程序界面进行截屏,并显示截屏内容,以使得用户能够拖动截屏内容。用户通过移动截屏内容,就可以实现将相应的应用程序界面移动和/或分享到特定的显示屏。
方式一
响应于用户针对第一显示屏执行的用于将第一显示屏上的应用程序界面移动到第二显示屏上的第一操作,将应用程序界面对应的应用程序窗口放入第二显示屏对应的窗口队列,以使得该应用程序界面可以显示在第二显示屏上。如图4中间部分所示,可以将屏幕B的地图拖动到屏幕A进行显示和交互。
第一操作可以是通过触控方式实现的操作,也可以是通过语音方式发出的语音指令。作为示例,第一操作可以是用户通过第一触控方式将应用程序界面划出第一显示屏边缘的手势操作,如可以是双指划出操作,第二显示屏为划动方向上的显示屏。以图6为例,首先参见图中6-1,用户可以通过双指在显示屏A上将导航界面向显示屏B所在方向划动。图中6-2为拖动过程中的中间状态,如图所示,显示屏A上仍显示导航界面,并且显示屏B上的播放器界面将被导航界面遮挡。图中6-3为拖动操作完成后的示意图,如图所示,最后显示屏A和显示屏B上均显示导航界面。
可选地,可以检测第一触控方式的划动方向,并基于划动方向确定第二显示屏。例如,可以预先获取多个显示屏的位置信息,基于多个显示屏的位置信息,将位于第一显示屏的划动方向上的显示屏确定为第二显示屏。
再例如,也可以预先获取多个显示屏的位置信息,基于多个显示屏的位置信息,将位于第一显示屏的划动方向上、且被用户执行了与划动方向一致的手势操作的显示屏确定为第二显示屏。由此,可以精准地识别出用户期望显示分享画面的显示屏,并且可以提高分享操作的趣味性。举例来说,第一显示屏可以由用户1操作,第二显示屏可以由用户2操作,用户1在期望将第一显示屏上的应用界面分享给用户2时,可以在第一显示屏上通过第一触控方式将第一显示屏上的应用界面朝着第二显示屏的方向划动,用户2可以通过第一触控方式在第二显示屏上按照相同方向划动,表明接受该分享,在第二显示屏上显示用户1分享的应用界面。如果未检测到用户2通过第一触控方式在第二显示屏上按照相同方向划动,则认为用户2不希望接收该分享,不在第二显示屏上显示用户1分享的应用界面。
方式二
响应于用户针对显示屏执行的用于将显示屏上的应用程序界面移除的第二操作,检测应用程序界面是否为来源于其他显示屏的克隆界面(也即分享界面)。在检测到应用程序界面是克隆界面的情况下,在显示屏对应的窗口队列中移除应用程序界面对应的应用程序窗口,并且/或者在检测到应用程序界面不是克隆界面的情况下,触发当前应用退出,并切换到前一个应用。
第二操作可以是通过触控方式实现的操作,也可以是通过语音方式发出的语音指令。作为示例,第二操作可以是用户通过第二触控方式将应用程序界面划出显示屏边缘的手势操作,如可以是单指划出操作。
以图7为例,首先参见图中7-1,用户可以通过单指在显示屏A上将快速划出显示屏A的屏幕边缘。图中7-2为划动过程中的中间状态,如图所示,显示屏A上的导航界面将逐渐被前一个应用播放器界面代替。图中7-3为划动操作完成后的示意图,如图所示,最后显示屏A上将显示掐一个应用界面,音乐播放器界面。
进一步地,在检测到要移除的应用程序界面不是克隆界面的情况下,还可以将其他显示该应用程序界面的显示屏对应的窗口队列中与该应用程序界面对应的应用程序窗口移除。也就是说,在移除非克隆界面时,可以连同其他显示该界面的克隆界面一并移除。
方式三
响应于用户针对第一显示屏上的应用程序界面执行的第三操作,将第一显示屏对应的窗口队列中上一个应用程序窗口显示到第一显示屏上,并将应用程序界面对应的应用程序窗口放入第二显示屏对应的窗口队列。
第三操作可以是用户通过触控方式实现的操作,也可以是用户通过语音方式发出的语音指令。作为示例,第三操作可以是用户通过第三触控方式将应用程序界面划出第一显示屏边缘的手势操作,如可以是用户通过三指或三指以上将应用程序界面划出第一显示屏边缘的手势操作。
第二显示屏可以是划动方向上的显示屏。其中,可以检测第三触控方式的划动方向,并基于划动方向确定第二显示屏。例如,可以预先获取多个显示屏的位置信息,基于多个显示屏的位置信息,将位于第一显示屏的划动方向上的显示屏确定为第二显示屏。再例如,也可以预先获取多个显示屏的位置信息,基于多个显示屏的位置信息,将位于第一显示屏的划动方向上、且被用户执行了与划动方向一致的手势操作的显示屏确定为第二显示屏。
以图8为例,首先参见图中8-1,用户可以通过三指划动的方式将屏幕A上的导航界面向屏幕B所在方向划动。图中8-2为划动过程中的中间状态,如图所示,屏幕A上将逐渐显示前一个应用界面(视频播放界面),并且屏幕B上的音乐播放器界面将逐渐被导航界面遮挡。图中8-3为划动操作完成后的示意图,如图所示,最后屏幕A上将显示前一个应用界面,屏幕B上显示分享过来的导航界面。
方式四
响应于用户针对显示屏执行的第四操作,在显示屏上显示所有启动的应用程序界面。例如,可以将显示屏对应的窗口队列中所有应用程序窗口显示在显示屏上。其中,显示屏上显示的所有启动的应用程序界面可以包括非克隆界面以及从其他显示屏分享过来的克隆界面。第四操作可以是用户使用三指或三指以上在显示屏上张开的手势操作。
进一步地,响应于用户针对其中一个应用程序界面执行的点击操作,可以将选中的应用程序界面切换显示到显示屏上。以图9为例,首先参见图中的9-1,初始状态下屏幕A上显示音乐播放画面,用户使用三指及以上在屏幕A上张开。如图中的9-2所示,响应于用户通过三指及以上在屏幕上张开的手势操作,可以预览多有启动的应用,如可以显示所有启动的应用的缩略图。如图中的9-3所示,用户可以点击其中一个应用,如视频播放界面,然后可以切换到视频播放界面(如图中的9-4所示)。
3、屏幕内容的识别
响应于用户将第一应用程序界面中的页面元素移动到第二应用程序界面中,可以识别页面元素,并基于识别结果指令第二应用程序界面对应的应用程序执行与页面元素相关的预定操作。第一应用程序界面和第二应用程序界面可以是显示在同一显示屏上的应用界面,也可以是显示在不同显示屏上的应用界面。
例如,第一应用程序界面可以是图片浏览器,页面元素可以是图片,第二应用程序界面可以是播放器,响应于用户将页面浏览器中的图片移动到播放器,可以识别图片中的文字和/或人物,并指令播放器播放与识别结果一致的多媒体资源。
如图4中下半部分所示,屏幕A的音乐播放器可以分享到屏幕B上进行显示,用户可以选择屏幕B内的图片浏览器中歌手“霉霉”的照片拖动到音乐播放器,可以向音乐播放器发送播放歌手“霉霉”的歌曲的音乐通知数据,以指令音乐播放器播放歌手“霉霉”的歌曲。
【数据传输和控制流程】
图10示出了根据本公开一实施例的能够实现本公开的多屏显示方案的系统架构图。图10所示的系统架构可以内置在一电子设备中,由该电子设备执行本公开的多屏显示方案,以使得可以由一个电子设备与多个显示屏分别连接,实现多屏显示及交互。
如图10所示,整体架构涉及应用层(Application)、端上智能模块(Intelligenton Mobile,IOM)、窗口管理器(WindowManager)、显示屏管理器(DisplayManager)、应用生命周期管理器(DPMS)、图形图像合成器(Utopaid)和硬件层(Hardware)。
应用层可以负责响应多屏显示的请求,调整应用在不同屏幕上的布局、分辨率等。IOM可以负责识别屏幕数据内容,产生跨屏幕拖动需要的数据。
窗口管理器、显示屏管理器、应用生命周期管理器以及图形图像合成器是本公开的多屏显示方案的核心系统模块,可以通过这些模块的协同工作来负责在多个显示屏上管理不同的窗口创建、显示、销毁、移动,用户输入事件在不同屏幕的派发,z-order排序,focus(焦点)计算,布局管理(Layout),属性和标志设置(Flag and Attribute),输入法和壁纸管理(IM and Wallpaper),窗口动画(Animation)配置和显示,截屏,数据拖动与放置,不同屏幕上应用生命周期的管理,不同显示屏幕Display的创建销毁与添加管理,以及最后将所有屏幕的内容做合成后渲染到不同物理屏幕上显示给终端用户。
窗口管理器主要用于实现多屏显示(Multi-Display)、屏幕截图(Screen Shot)、屏幕缩略图(Thumbnail screem)、排序状态记录(Compositor State Transaction)。其中,多屏显示可以包括z-order排序、焦点计算(focus),布局管理(Layout),窗口动画配置和显示(Animation),属性和标志设置(Flag and Attribute),变换(Transform),策略(Policy),输入手势(Input and Guerture)、启动界面(Splash)、数据拖动与放置(Dragand Drop)、转屏(Rotation)、客户端WMS混合(Guest WMS confusion)、多用户(Multi-User)、克隆/删除/移动窗口(Clone/DS/Move Window)。
显示屏管理器负责多个显示屏的管理,如可以向窗口管理器通知显示屏的新增/删除请求,以实现显示屏的新增/删除。图形图像合成器可以包括HDMI插件接口(HDMIPlug-in),界面复合主接口(HWFlinger Host Plug),区域屏幕截图(Region ScreenShot),GPU合成(GPU Composer),覆盖合成(Overlay Composer),混合合成(MixComposer),并可以提供默认显示(Primary Display)、外部显示(External Display)、虚拟显示(Virtual Display)。硬件层可以包括GPU、显示屏、HDMI和存储器。
下面就多屏交互功能的实现流程以及数据流和控制流的过程进行示例性说明。
显示屏增加和删除的流程
如图11所示,显示屏管理器(DisplayManager)可以向窗口管理器(WMS)发送显示屏增加/删除请求,WMS可以根据窗口管理策略,处理显示屏增加/删除请求。例如,对于显示屏增加请求,窗口管理器可以为其建立(display、stack、task、token)四层管理数据结构,对于显示屏删除请求,窗口管理器可以按照一定的策略来处理为显示屏之前创建的stack、task、token以及window。
另外,对于显示屏增加请求,窗口管理器还可以异步查询显示屏的分辨率、id等屏幕信息。例如,窗口管理器可以通过向显示屏管理器发送查询请求,获取显示屏管理器返回的查询数据。
多显示屏的窗口管理流程
如图12A所示,应用生命周期管理器(DPMS)可以将根据显示屏的userid创建(stack、task、token)数据结构的消息发送至shell,由shell将创建这一数据结构的消息发送至WMS,由WMS建立(display、stack、task、token)四层管理数据结构。并且,shell还可以根据userid分配默认的displayid。
在需要在显示屏上显示新的窗口时,可以由页面窗口(Page window)将增加窗口的消息发送至shell,由shell将其发送至WMS,以由WMS将需要显示的新的窗口添加到对应的stack中,如可以建立(display、stack、task、token、window)这一管理数据结构。
图12B接图12A,如图12B所示,WMS还可以基于displayid对同一显示屏对应的stack中的窗口进行z-order排序,做Focus计算,输入法(InputMethod)控制,窗口的布局管理,如可以包括但不限于不同显示屏上的状态栏、导航栏、壁纸的布局管理。
图12C接图12B,如图12C所示,DPMS可以设置令牌可见度,shell可以将其发送给WMS,Pagewindow还可以将完成绘制的消息发送至WMS,由WMS还基于displayid计算主window和非主window的窗口动画改变状态,开始动画。另外,DPMS还可以将移除消息发送至shell,由shell将该消息转发至WMS,由WMS移除stack、task、token或者window,以及window下的克隆窗口列表中的window。
跨屏幕拖放流程
如图13所示,Input响应于捕捉到用户针对显示屏执行的手势操作,可以通过WMP通知WMS进行屏幕捕捉,进入drag and drop(拖放)模式,通知WMD启动模式编辑窗口,以让用户感知到现在可以拖动内容。具体地,可以对用户操作针对的应用程序界面进行截屏,并显示截屏内容,以使得用户能够拖动截屏内容。在用户drop后,即手势操作结束后,可以退出拖放模式。
作为示例,IOM可以对用户拖动的内容进行对象识别,如可以识别出用户拖动的图片中的文字和/或人物,WMS可以计算drop操作针对的window区域,以便向对应app通知IOM识别的结果,以指令对应app执行与识别结果相关的操作。例如,用户在将人物图片拖动到音乐播放器中时,可以向音乐播放器通知图片识别结果,以使得音乐播放器可以播放与该人物相关的音乐。
手势管理流程
Input响应于捕捉到用户针对显示屏执行的手势操作,可以检测该手势操作的类别。针对不同的手势操作,WMP可以具有不同的窗口管理策略。例如,对于单指回退手势,可以找到该手势作用的窗口,如果该窗口是克隆窗口,则可以发起移除克隆窗口的操作,如果该窗口不是克隆窗口,则进行回退操作,如可以结束当前应用,返回上一个应用。对于双指手势,可以找到手势作用的窗口以及手势对应的目标显示屏,可以将该窗口作为目标显示屏的克隆窗口,添加到其窗口队列中。对于多指(三指及以上)移动手势,可以找到手势作用的窗口以及手势对应的目标显示屏,可以将该窗口移动到目标显示屏的窗口队列中。对于多指张开手势(三指及以上),可以绘制和显示所有可见应用的缩略图。对于区域截屏手势,可以进行区域内容截图,进行IOM物体识别。
如图14A所示,在在手势通知是单指回退手势,且是移除克隆窗口的情况下,WMP可以将移除克隆窗口的消息发送至WMS,由WMS移除克隆窗口对应的克隆界面,如可以指令compositor-wrap移除克隆界面。并且,weston也可以从界面对应的视图对象的displayid列表中删除克隆界面所在显示屏的displayid。在单指回退手势所移除的窗口是非克隆窗口的情况下,WMS可以移除窗口及窗口属性,并且可以同时移除该窗口对应的克隆窗口列表中的所有克隆窗口,如可以指令compositor-wrap移除克隆窗口对应的克隆界面。另外,如果手势处理结果为返回,则可以发送返回指令给对应的app,以返回上一个界面,或退出应用。
weston可以针对视图对象(view)维护一个显示屏列表,表示该view需要绘制到那些显示屏上。对于被移除的窗口,weston可以从与被移除的窗口对应的视图对象(view)的显示屏列表中删除对应的显示屏,以实现view不在该显示屏上显示。
在手势通知是双指手势的情况下,WMP可以将克隆窗口的消息发送至WMS,由WMS将待克隆的窗口对应的界面克隆到目标显示屏上。例如可以指令compositor-wrap将待克隆的窗口对应的界面克隆到目标显示屏上。
在手势通知是多指(三指及以上)移动手势的情况下,WMP可以将移动窗口到目标显示屏的消息发送至WMS,由WMS处理,处理过程不再赘述。
图14B接图14A,如图14B所示,在手势通知是多指(三指及以上)张开手势的情况下,WMP可以通知WMS开始显示缩略图窗口,WMD可以绘制所有可见的缩略图窗口,并请求显示。并且,根据用户点选的缩略图,WMS还可以通知WMS克隆该窗口到当前显示屏上。
在手势通知是屏幕区域截图的情况下,WMP可以通知WMS进行截图,屏幕截图过程不再赘述。
IOM管理流程
如图15所示,WMS可以设置窗口变化状态,针对视图对象(view),weson可以维护displayid列表,基于displayid列表确view输出到哪些屏幕上。对于需要克隆的界面对应的view,weson可以增加新的displayId属性,以使得该view能够被克隆到相应的显示屏上。在屏幕截图完成后,可以由IOM对截图数据进行识别。
系统模块数据与控制流程
如图16所示,Input模块可以获取显示屏增加/移除、操作手势等输入事件,并将其交由WSM处理。WMS可以通过显示屏管理器(DisplayManager)管理显示屏的增加/移除/控制/查询,DisplayManager可以通过系统组件(Components)查询显示屏的分辨率等屏幕信息,WMS还可以根据显示屏ID调用Audio/Video/Camera/BT(蓝牙)/Tel/Sensor/Powercontrol等系统组件。
APP可以包括JS应用(JS APP)、CAF(CloudApp Framework)、页面API(Pageapi)、绘图引擎(AgileEngine)、页面窗口(PageWindow)等多部分,APP内的应用程序界面可以显示在一个或多个显示屏上。DPMS可以对多显示屏的生命周期进行控制。WMS可以根据显示屏ID管理显示屏的应用程序窗口的增加或移除,来实现多显示屏的控制和回调,如可以移动窗口到显示屏和回调,克隆窗口到显示屏和回调。并可以管理用户输入事件(如手势操作)在不同显示屏的派发。WMS和DPMS可以根据显示屏ID管理应用程序窗口的显示。IOM负责识别屏幕数据内容产生跨屏幕拖动需要的数据,Weston可以将所有屏幕的内容做合成后渲染到不同显示屏上。
综上,本公开的多屏显示方案可以构造为一种可搭载在电子设备上的系统架构,以为多屏设备环境(比如汽车电子座舱)中提供完整解决方案,可以通过一个设备连接多个显示屏,实现应用在多屏上的显示,以及不同屏幕之间的交互,在降低成本的同时,可以提升用户的使用体验。
【多屏显示装置】
图17是示出了根据本公开一实施例的多屏显示装置的结构的示意性方框图。其中,多屏显示装置的功能模块可以由实现本公开原理的硬件、软件或硬件和软件的结合来实现。本领域技术人员可以理解的是,图17所描述的功能模块可以组合起来或者划分成子模块,从而实现上述发明的原理。因此,本文的描述可以支持对本文描述的功能模块的任何可能的组合、或者划分、或者更进一步的限定。
下面就多屏显示装置可以具有的功能模块以及各功能模块可以执行的操作做简要说明,对于其中涉及的细节部分可以参见上文相关的描述,这里不再赘述。
参见图17,多屏显示装置200包括连接模块210、窗口队列维护模块220以及控制显示模块230。
连接模块210用于与一个或多个显示屏分别连接。窗口队列维护模块220用于为所连接的每个显示屏维护一个窗口队列,并将需要在一个或多个显示屏中显示的应用程序窗口放入对应的窗口队列。控制显示模块230用于将窗口队列中的应用程序窗口显示到对应的显示屏上。控制显示模块230可以将与应用程序窗口对应的视图对象绘制到应用程序窗口所关联的画布上,并将绘制好的画布渲染到对应的显示屏上。可选地,多屏显示装置200还可以包括显示屏列表维护模块(图中未示出),用于为每个视图对象维护显示屏列表,显示屏列表用于表征视图对象需要绘制到的显示屏。
窗口队列维护模块220可以将属于同一应用程序的应用程序窗口放入相同的窗口队列,也可以将属于同一应用程序的两个不同的应用程序窗口放入于不同的窗口队列。
在本公开的一个实施例中,多屏显示装置还包括截屏模块(图中未示出),用于响应于检测到用户针对显示屏执行的操作,对操作针对的应用程序界面进行截屏,并显示截屏内容,以使得用户能够拖动截屏内容。
在本公开的一个实施例中,响应于用户针对第一显示屏执行的用于将第一显示屏上的应用程序界面移动到第二显示屏上的第一操作,窗口队列维护模块220可以将应用程序界面对应的应用程序窗口放入第二显示屏对应的窗口队列。其中,第一操作可以是用户通过第一触控方式将应用程序界面划出第一显示屏边缘的手势操作,第二显示屏为划动方向上的显示屏。
可选地,多屏显示装置20还可以包括方向检测模块和确定模块(图中未示出)。方向检测模块可以检测第一触控方式的划动方向,确定模块可以基于所述划动方向确定第二显示屏。
例如,确定模块可以基于所述多个显示屏的位置信息,将位于所述第一显示屏的划动方向上的显示屏确定为第二显示屏。再例如,确定模块也可以基于所述多个显示屏的位置信息,将位于所述第一显示屏的划动方向上、且被用户执行了与所述划动方向一致的手势操作的显示屏确定为第二显示屏。
在本公开的一个实施例中,多屏显示装置200可以包括界面检测模块和切换模块(图中未示出)。响应于用户针对显示屏执行的用于将显示屏上的应用程序界面移除的第二操作,界面检测模块可以用于检测应用程序界面是否为来源于其他显示屏的克隆界面。窗口队列维护模块220可以在界面检测模块检测到应用程序界面是克隆界面的情况下,在显示屏对应的窗口队列中移除应用程序界面对应的应用程序窗口,并且/或者在界面检测模块检测到应用程序界面不是克隆界面的情况下,切换模块可以触发当前应用退出,并切换到前一个应用。第二操作可以为用户通过第二触控方式将应用程序界面划出显示屏边缘的手势操作。可选地,在界面检测模块检测到应用程序界面不是克隆界面的情况下,窗口队列维护模块220可以将其他显示应用程序界面的显示屏对应的窗口队列中与应用程序界面对应的应用程序窗口移除。
在本公开的一个实施例中,窗口队列维护模块220响应于用户针对第一显示屏上的应用程序界面执行的第三操作,将第一显示屏对应的窗口队列中前一个应用程序窗口显示到第一显示屏上,并将应用程序界面对应的应用程序窗口放入第二显示屏对应的窗口队列。其中,所述第三操作可以为用户通过第三触控方式将所述应用程序界面划出所述第一显示屏边缘的手势操作,所述第二显示屏为划动方向上的显示屏。
在本公开的一个实施例中,控制显示模块可以响应于用户针对显示屏执行的第四操作,在所述显示屏上显示所有启动的应用程序界面。其中,所述第四操作可以是用户使用三指及以上在所述显示屏上张开的手势操作。可选地,控制显示模块可以将所述显示屏对应的窗口队列中所有应用程序窗口显示在所述显示屏上。并且,响应于用户针对其中一个应用程序界面执行的点击操作,控制显示模块可以将选中的应用程序界面切换显示到所述显示屏上。
在本公开的一个实施例中,多屏显示装置还包括识别模块(图中未示出)。识别模块用于响应于用户将第一应用程序界面中的页面元素移动到第二应用程序界面中,识别所述页面元素,并基于识别结果指令所述第二应用程序界面对应的应用程序执行与所述页面元素相关的预定操作。其中,第一应用程序界面和第二应用程序界面可以显示在同一显示屏,或者也可以显示在不同的显示屏。作为示例,第一应用程序界面为页面浏览器,页面元素为图片,第二应用程序界面为播放器,识别模块识别图片中的文字和/或人物,并指令播放器播放与识别结果一致的多媒体资源。
在本公开的一个实施例中,窗口队列为先入后出队列。多屏显示装置还可以包括信息维护模块,用于为每个窗口队列维护任务信息和令牌信息,其中,任务信息用于表征窗口队列中的应用程序窗口之间的组合关系,令牌信息用于表征窗口队列中的应用程序窗口的类别。
【多屏显示系统】
图18是示出了根据本公开一实施例的多屏显示系统的结构的示意性结构图。
如图18所示,多屏显示系统300包括一个或多个显示屏310和一个电子设备320。可选地,多屏显示系统300还可以包括更多个电子设备320。电子设备320可以执行本公开的多屏显示方案,如上文述及的多屏显示方法,来实现多屏显示及多屏交互功能。其中,电子设备320可以具有显示屏,也可以不具有显示屏。也即,多个显示屏310可以包括电子设备320本身具有的显示屏,也可以不包括。
电子设备320上可以安装多个应用程序,电子设备320可以将应用程序界面显示在一个或多个显示屏310上,并且,电子设备320还可以根据用户的操作,实现这多个显示屏310之间的屏幕数据内容的移动与共享。
【舱体】
本公开还还可以实现为一种具有预定空间的舱体,如车辆电子座舱。该舱体可以包括一个或多个显示屏和至少一个电子设备。电子设备可以执行本公开的多屏显示方案,如上文述及的多屏显示方法,来实现多屏显示及多屏交互功能。其中,电子设备可以具有显示屏,也可以不具有显示屏。也即,多个显示屏可以包括电子设备本身具有的显示屏,也可以不包括。
电子设备上可以安装多个应用程序,电子设备可以将应用程序界面显示在一个或多个显示屏上,并且,电子设备还可以根据用户的操作,实现这多个显示屏之间的屏幕数据内容的移动与共享。
在舱体为车辆电子座舱的情况下,显示屏可以包括但不限于中控操作屏、抬头显示屏、流媒体后视镜、位于后排座椅的娱乐显示屏等多种中的一种或多种。
【计算设备】
图19示出了根据本公开一实施例可用于实现上述多屏显示方法的数据处理的计算设备的结构示意图。
参见图19,计算设备400包括存储器410和处理器420。
处理器420可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器420可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器420可以使用定制的电路实现,例如特定用途集成电路(ASIC,Application Specific Integrated Circuit)或者现场可编程逻辑门阵列(FPGA,Field Programmable Gate Arrays)。
存储器410可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器420或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器410可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器410可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器410上存储有可执行代码,当可执行代码被处理器420处理时,可以使处理器420执行上文述及的多屏显示方法。
上文中已经参考附图详细描述了根据本公开的多屏显示方法、装置、设备、系统及舱体。
此外,根据本公开的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本公开的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本公开还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本公开的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本公开的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。