投屏方法和电子设备转让专利

申请号 : CN202110958660.0

文献号 : CN113778360B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘诗聪

申请人 : 荣耀终端有限公司

摘要 :

本申请实施例提供了一种投屏方法和电子设备,第一电子设备通过识别第一应用中位于第一图层的第一控件的控件信息和位于第二图层的第二控件的控件信息,并分别根据第一控件的控件信息和第二控件的控件信息确定各控件所在图层的图层类型,在确定两个图层的图层类型不同的情形下,根据确定的图层类型生成包括不同控件的显示画面分别送往不同的电子设备进行显示,从而实现了同一应用对应的界面中不同图层的分离,并能将包括不同控件的显示画面显示在不同的电子设备,使得发起投屏的第一电子设备和接受投屏内容的第二电子设备能够显示不同的画面,进而能够更好的适应不同的投屏场景。

权利要求 :

1.一种投屏方法,其特征在于,应用于发起投屏的第一电子设备,所述第一电子设备安装有第一应用,所述第一应用包括第一控件和第二控件,所述第一控件位于第一图层,所述第二控件位于第二图层,所述方法包括:获取所述第一控件的控件信息和所述第二控件的控件信息;

根据所述第一控件的控件信息确定所述第一图层的图层类型;

根据所述第二控件的控件信息确定所述第二图层的图层类型,所述第一图层的图层类型与所述第二图层的图层类型不同;

根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并在所述第一电子设备的屏幕显示所述第一显示 画面,将所述第二显示画面投射到第二电子设备的屏幕进行显示,所述第一显示画面包括所述第一控件和所述第二控件,所述第二显示画面包括所述第一控件,不包括所述第二控件;

其中,所述根据所述第一控件的控件信息确定所述第一图层的图层类型,包括:从所述第一控件的控件信息中提取所述第一控件的控件名和所述第一控件的尺寸信息;

对所述第一控件的控件名进行解析,在从所述第一控件的控件名中解析出所述第一控件的控件类型、所述第一应用的包名和所述第一控件所在的界面信息时,根据所述第一控件的控件类型、所述包名、所述第一控件所在的界面信息和所述第一控件的尺寸信息,确定所述第一图层的图层类型;

在从所述第一控件的控件名中解析出所述第一控件的控件类型和所述第一控件所在的界面信息,未解析出所述第一应用的包名时,获取绘制所述第一控件的进程的进程标识号PID,根据绘制所述第一控件的PID确定所述第一控件的来源,根据所述第一控件的控件类型、所述第一控件的来源、所述第一控件的所在的界面信息和所述第一控件的尺寸信息,确定所述第一图层的图层类型,所述第一控件的来源包括所述第一应用的包名;

所述根据所述第二控件的控件信息确定所述第二图层的图层类型,包括:从所述第二控件的控件信息中提取所述第二控件的控件名和所述第二控件的尺寸信息;

对所述第二控件的控件名进行解析,在从所述第二控件的控件名中解析出所述第二控件的控件类型、所述第一应用的包名和所述第二控件所在的界面信息时,根据所述第二控件的控件类型、所述包名、所述第二控件所在的界面信息和所述第二控件的尺寸信息,确定所述第二图层的图层类型;

在从所述第二控件的控件名中解析出所述第二控件的控件类型和所述第二控件所在的界面信息,未解析出所述第一应用的包名时,获取绘制所述第二控件的进程的进程标识号PID,根据绘制第二控件的PID确定所述第二控件的来源,根据所述第二控件的控件类型、所述第二控件的来源、所述第二控件所在的界面信息和所述第二控件的尺寸信息,确定所述第二图层的图层类型,所述第二控件的来源包括所述第一应用的包名。

2.根据权利要求1所述的方法,其特征在于,在对所述控件名进行解析之前,所述方法还包括:将所述控件名和所述尺寸信息作为检索关键词;

根据所述关键词,在图层标识记录库中查找与所述关键词匹配的控件;

在查找到与所述关键词匹配的控件时,将所述控件对应的图层类型确定为所述第一图层的图层类型;

在未查找到与所述关键词匹配的控件时,执行对所述控件名进行解析的步骤。

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:

在根据所述第一控件的控件信息无法确定所述第一图层的图层类型时,获取所述第一应用当前显示的画面,所述当前显示的画面中包括所述第一控件;

根据所述当前显示的画面中所述第一控件显示的内容确定所述第一图层的图层类型。

4.根据权利要求1所述的方法,其特征在于,所述方法还包括:

在根据所述第二控件的控件信息无法确定所述第二图层的图层类型时,获取所述第一应用当前显示的画面,所述当前显示的画面中包括所述第二控件;

根据所述当前显示的画面中所述第二控件显示的内容确定所述第二图层的图层类型。

5.根据权利要求1所述的方法,其特征在于,所述根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并在所述第一电子设备的屏幕显示所述第一画面,将所述第二显示画面投射到第二电子设备的屏幕进行显示,包括:根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并将所述第一显示画面缓存到第一显示缓存,将所述第二显示画面缓存到第二显示缓存;

按照缓存顺序,从所述第一显示缓存中取出所述第一显示画面,并将所述第一显示画面在所述第一电子设备的屏幕进行显示;

对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容;

将所述投屏内容发送至所述第二电子设备,供所述第二电子设备解码所述投屏内容,得到所述第二显示画面,并在所述第二电子设备的屏幕进行显示。

6.根据权利要求5所述的方法,其特征在于,所述根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并将所述第一显示画面缓存到第一显示缓存,将所述第二显示画面缓存到第二显示缓存,包括:确定所述第一显示缓存对应的第一图层过滤规则和所述第二显示缓存对应的第二图层过滤规则;

根据所述第一图层过滤规则、所述第一图层的图层类型和所述第二图层的图层类型,确定所述第一显示画面包括所述第一图层和所述第二图层;

获取所述第一图层中所述第一控件的资源和所述第二图层中所述第二控件的资源,根据所述第一控件的资源和所述第二控件的资源,生成所述第一显示画面,并将所述第一显示画面缓存到第一显示缓存;

根据所述第二图层过滤规则、所述第一图层的图层类型和所述第二图层的图层类型,确定所述第二显示画面包括所述第一图层;

获取所述第一图层中所述第一控件的资源,根据所述第一控件的资源生成所述第二显示画面,并将所述第二显示画面缓存到所述第二显示缓存。

7.根据权利要求6所述的方法,其特征在于,所述确定所述第一显示缓存对应的第一图层过滤规则和所述第二显示缓存对应的第二图层过滤规则,包括:获取所述第一电子设备的第一设备标识和所述第二电子设备的第二设备标识;

在图层过滤规则表中查找与所述第一设备标识匹配的图层过滤规则,将查找到的图层过滤规则确定为所述第一显示缓存对应的所述第一图层过滤规则;

在所述图层过滤规则表中查找与所述第二设备标识匹配的图层过滤规则,将查找到的图层过滤规则确定为所述第二显示缓存对应的所述第二图层过滤规则。

8.根据权利要求6所述的方法,其特征在于,所述确定所述第一显示缓存对应的第一图层过滤规则和所述第二显示缓存对应的第二图层过滤规则,包括:在所述第一电子设备的屏幕上显示可供用户操作的图层过滤规则决策界面,所述图层过滤规则决策界面包括所述第一控件和所述第一控件所在的所述第一图层的图层类型,所述第二控件和所述第二控件所在的所述第二图层的图层类型;

响应于用户为所述第一显示缓存设置所述第一图层过滤规则的操作行为,生成所述第一图层过滤规则;

响应于用户为所述第二显示缓存设置所述第二图层过滤规则的操作行为,生成所述第二图层过滤规则。

9.根据权利要求5所述的方法,其特征在于,所述对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容,包括:获取所述第一电子设备的第一屏幕纵横比和所述第二电子设备的第二屏幕纵横比;

在所述第一屏幕纵横比和所述第二屏幕纵横比不同时,对所述第二显示缓存中的所述第二显示画面进行去黑边处理,并录制去黑边后的所述第二显示画面得到所述投屏内容;

在所述第一屏幕纵横比和所述第二屏幕纵横比相同时,对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容。

10.根据权利要求5所述方法,其特征在于,所述对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容,包括:获取所述第二电子设备的显示能力;

根据所述显示能力确定视频流刷新帧率;

根据所述视频流刷新帧率,对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容。

11.根据权利要求1至10任一项所述的方法,其特征在于,所述第一应用为会议应用,所述第一控件为视频类控件,所述第一图层的图层类型为视频流播放图层;所述第二控件为按钮类控件,所述第二图层的图层类型为会议控制按钮图层。

12.根据权利要求1至10任一项所述的方法,其特征在于,所述第一应用为会议应用,所述第一控件为白板批注控件,所述第一图层的图层类型为白板批注图层;所述第二控件为按钮类控件,所述第二图层的图层类型为会议控制按钮图层。

13.一种电子设备,其特征在于,所述电子设备为第一电子设备,所述第一电子设备安装有第一应用,所述第一应用包括第一控件和第二控件,所述第一控件位于第一图层,所述第二控件位于第二图层,所述电子设备包括:一个或多个处理器;

存储器;

以及一个或多个计算机程序,其中所述一个或多个计算机程序存储在所述存储器上,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:获取所述第一控件的控件信息和所述第二控件的控件信息;

根据所述第一控件的控件信息确定所述第一图层的图层类型;

根据所述第二控件的控件信息确定所述第二图层的图层类型,所述第一图层的图层类型与所述第二图层的图层类型不同;

根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并在所述第一电子设备的屏幕显示所述第一画面,将所述第二显示画面投射到第二电子设备的屏幕进行显示,所述第一显示画面包括所述第一控件和所述第二控件,所述第二显示画面包括所述第一控件,不包括所述第二控件;

其中,所述根据所述第一控件的控件信息确定所述第一图层的图层类型,包括:从所述第一控件的控件信息中提取所述第一控件的控件名和所述第一控件的尺寸信息;

对所述第一控件的控件名进行解析,在从所述第一控件的控件名中解析出所述第一控件的控件类型、所述第一应用的包名和所述第一控件所在的界面信息时,根据所述第一控件的控件类型、所述包名、所述第一控件所在的界面信息和所述第一控件的尺寸信息,确定所述第一图层的图层类型;

在从所述第一控件的控件名中解析出所述第一控件的控件类型和所述第一控件所在的界面信息,未解析出所述第一应用的包名时,获取绘制所述第一控件的进程的进程标识号PID,根据绘制所述第一控件的PID确定所述第一控件的来源,根据所述第一控件的控件类型、所述第一控件的来源、所述第一控件的所在的界面信息和所述第一控件的尺寸信息,确定所述第一图层的图层类型,所述第一控件的来源包括所述第一应用的包名;

所述根据所述第二控件的控件信息确定所述第二图层的图层类型,包括:从所述第二控件的控件信息中提取所述第二控件的控件名和所述第二控件的尺寸信息;

对所述第二控件的控件名进行解析,在从所述第二控件的控件名中解析出所述第二控件的控件类型、所述第一应用的包名和所述第二控件所在的界面信息时,根据所述第二控件的控件类型、所述包名、所述第二控件所在的界面信息和所述第二控件的尺寸信息,确定所述第二图层的图层类型;

在从所述第二控件的控件名中解析出所述第二控件的控件类型和所述第二控件所在的界面信息,未解析出所述第一应用的包名时,获取绘制所述第二控件的进程的进程标识号PID,根据绘制第二控件的PID确定所述第二控件的来源,根据所述第二控件的控件类型、所述第二控件的来源、所述第二控件所在的界面信息和所述第二控件的尺寸信息,确定所述第二图层的图层类型,所述第二控件的来源包括所述第一应用的包名。

14.根据权利要求13所述的电子设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:将所述控件名和所述尺寸信息作为检索关键词;

根据所述关键词,在图层标识记录库中查找与所述关键词匹配的控件;

在查找到与所述关键词匹配的控件时,将所述控件对应的图层类型确定为所述第一图层的图层类型;

在未查找到与所述关键词匹配的控件时,执行对所述控件名进行解析的步骤。

15.根据权利要求14所述的电子设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:在根据所述第一控件的控件信息无法确定所述第一图层的图层类型时,获取所述第一应用当前显示的画面,所述当前显示的画面中包括所述第一控件;

根据所述当前显示的画面中所述第一控件显示的内容确定所述第一图层的图层类型。

16.根据权利要求13所述的电子设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:在根据所述第二控件的控件信息无法确定所述第二图层的图层类型时,获取所述第一应用当前显示的画面,所述当前显示的画面中包括所述第二控件;

根据所述当前显示的画面中所述第二控件显示的内容确定所述第二图层的图层类型。

17.根据权利要求13所述的电子设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并将所述第一显示画面缓存到第一显示缓存,将所述第二显示画面缓存到第二显示缓存;

按照缓存顺序,从所述第一显示缓存中取出所述第一显示画面,并将所述第一显示画面在所述第一电子设备的屏幕进行显示;

对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容;

将所述投屏内容发送至所述第二电子设备,供所述第二电子设备解码所述投屏内容,得到所述第二显示画面,并在所述第二电子设备的屏幕进行显示。

18.根据权利要求17所述的电子设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:确定所述第一显示缓存对应的第一图层过滤规则和所述第二显示缓存对应的第二图层过滤规则;

根据所述第一图层过滤规则、所述第一图层的图层类型和所述第二图层的图层类型,确定所述第一显示画面包括所述第一图层和所述第二图层;

获取所述第一图层中所述第一控件的资源和所述第二图层中所述第二控件的资源,根据所述第一控件的资源和所述第二控件的资源,生成所述第一显示画面,并将所述第一显示画面缓存到第一显示缓存;

根据所述第二图层过滤规则、所述第一图层的图层类型和所述第二图层的图层类型,确定所述第二显示画面包括所述第一图层;

获取所述第一图层中所述第一控件的资源,根据所述第一控件的资源生成所述第二显示画面,并将所述第二显示画面缓存到所述第二显示缓存。

19.根据权利要求17所述的电子设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:获取所述第一电子设备的第一设备标识和所述第二电子设备的第二设备标识;

在图层过滤规则表中查找与所述第一设备标识匹配的图层过滤规则,将查找到的图层过滤规则确定为所述第一显示缓存对应的所述第一图层过滤规则;

在所述图层过滤规则表中查找与所述第二设备标识匹配的图层过滤规则,将查找到的图层过滤规则确定为所述第二显示缓存对应的所述第二图层过滤规则。

20.根据权利要求17所述的电子设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:在所述第一电子设备的屏幕上显示可供用户操作的图层过滤规则决策界面,所述图层过滤规则决策界面包括所述第一控件和所述第一控件所在的所述第一图层的图层类型,所述第二控件和所述第二控件所在的所述第二图层的图层类型;

响应于用户为所述第一显示缓存设置所述第一图层过滤规则的操作行为,生成所述第一图层过滤规则;

响应于用户为所述第二显示缓存设置所述第二图层过滤规则的操作行为,生成所述第二图层过滤规则。

21.根据权利要求16所述的电子设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:获取所述第一电子设备的第一屏幕纵横比和所述第二电子设备的第二屏幕纵横比;

在所述第一屏幕纵横比和所述第二屏幕纵横比不同时,对所述第二显示缓存中的所述第二显示画面进行去黑边处理,并录制去黑边后的所述第二显示画面得到投屏内容;

在所述第一屏幕纵横比和所述第二屏幕纵横比相同时,对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容。

22.根据权利要求16所述的电子设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:获取所述第二电子设备的显示能力;

根据所述显示能力确定视频流刷新帧率;

根据所述视频流刷新帧率,对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容。

23.一种计算机可读存储介质,包括计算机程序,其特征在于,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1至12任一项所述的投屏方法。

24.一种芯片,其特征在于,包括:一个或多个处理电路和一个或多个收发管脚;其中,所述收发管脚和所述处理电路通过内部连接通路互相通信,所述处理电路执行权利要求1至12任一项所述的投屏方法,以控制接收管脚接收信号,以控制发送管脚发送信号。

说明书 :

投屏方法和电子设备

技术领域

[0001] 本申请实施例涉及终端领域,尤其涉及一种投屏方法和电子设备。

背景技术

[0002] 随着终端技术的发展,越来越多的终端具备投屏功能,例如在家庭、工作、教学、游戏竞技场景下,终端通过将当前显示的画面投射到大屏上,从而可以大大方便人们观看画面内容。
[0003] 但是目前的投屏方式投射到大屏上的画面内容与终端显示的画面内容是一致的,对于会议应用程序(软件),会议过程中往往会涉及到添加人员、设置主席、人员静音、共享内容选择等操作,现有的投屏方式在终端界面对会议控制按钮的操作,也会投射到大屏,这就会对大屏显示的视频流内容造成干扰,从而影响通过大屏观看会议内容的用户体验。

发明内容

[0004] 为了解决上述技术问题,本申请提出了一种投屏方法和电子设备。在该方法中,通过对第一应用对应的界面中的图层进行识别,进而进而根据识别出的图层类型和需求生成包括不同控件的画面,并将生成的画面分别传送给不同的电子设备,使得最终显示在发起投屏的电子设备的画面和显示在接受投屏内容的电子设备的画面不同,进而能够更好的适应不同的投屏场景。
[0005] 第一方面,提供一种投屏方法,应用于发起投屏的第一电子设备,所述第一电子设备安装有第一应用,所述第一应用包括第一控件和第二控件,所述第一控件位于第一图层,所述第二控件位于第二图层。该投屏方法包括:获取所述第一控件的控件信息和所述第二控件的控件信息;根据所述第一控件的控件信息确定所述第一图层的图层类型;根据所述第二控件的控件信息确定所述第二图层的图层类型,所述第一图层的图层类型与所述第二图层的图层类型不同;根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并在所述第一电子设备的屏幕显示所述第一画面,将所述第二显示画面投射到第二电子设备的屏幕进行显示,所述第一显示画面包括所述第一控件和所述第二控件,所述第二显示画面包括所述第一控件,不包括所述第二控件。这样,发起投屏的第一电子设备通过识别第一应用中位于第一图层的第一控件的控件信息和位于第二图层的第二控件的控件信息,并分别根据第一控件的控件信息和第二控件的控件信息确定各控件所在图层的图层类型,在确定两个图层的图层类型不同的情形下,根据确定的图层类型生成包括不同控件的显示画面分别送往不同的电子设备进行显示,如将包括第一控件和第二控件的第一显示画面送往第一电子设备,将包括第一控件,不包括第二控件的第二显示画面送往第二电子设备显示,从而实现了同一应用对应的界面中不同图层的分离,并能将包括不同控件的显示画面显示在不同的电子设备,使得发起投屏的第一电子设备和接受投屏内容的第二电子设备能够显示不同的画面,进而能够更好的适应不同的投屏场景。
[0006] 示例性的,发起投屏的电子设备为手机。
[0007] 示例性的,第一应用为会议应用。
[0008] 示例性的,在第一应用为会议应用时,界面至少包括视频流播放图层和会议控制按钮图层。
[0009] 示例性的,视频流播放图层中至少包括视频流播放控件,会议控制按钮图层中至少包括会议控制按钮控件。
[0010] 示例性的,在第一应用为会议应用时,显示在第一电子设备的屏幕上的第一显示画面包括所有图层类型的图层中包括的控件,如第一图层中的第一控件和第二图层中的第二控件,显示在第二电子设备的屏幕上的第二显示画面仅包括视频流播放图层中包括的控件,如包括第一图层中的第一控件,不包括第二图层中的第二控件。
[0011] 根据第一方面,所述根据所述第一控件的控件信息确定所述第一图层的图层类型,包括:从所述第一控件的控件信息中提取所述第一控件的控件名和所述第一控件的尺寸信息;对所述控件名进行解析,在从所述控件名中解析出所述第一控件的控件类型、所述第一应用的包名和所述第一控件所在的界面信息时,根据所述控件类型、所述包名、所述界面信息和所述尺寸信息,确定所述第一图层的图层类型;在从所述控件名中解析出所述第一控件的控件类型和所述第一控件所在的界面信息,未解析出所述第一应用的包名时,获取绘制所述第一控件的进程的进程标识号PID,根据所述PID确定所述第一控件的来源,根据所述控件类型、所述来源、所述界面信息和所述尺寸信息,确定所述第一图层的图层类型,所述来源包括所述第一应用的包名。这样,根据第一控件的控件类型便可以确定第一控件的用途,根据第一应用的包名便可以确定第一应用的应用类型,进而根据第一控件的用途,所在第一应用的应用类型,并结合第一控件的尺寸信息和在第一应用中具体的界面信息,便能够精准的识别出市面上大部分应用中包括的第一控件所在的图层的图层类型。
[0012] 示例性的,在没有从第一控件的控件名中解析出第一应用的包名时,通过获取绘制第一控件的进程的PID,从而根据唯一的PID可以确定创建该PID对应的进程的来源,即第一应用,进而得到第一应用的包名,这样无论第一控件的控件名中是否有第一应用的包名,均可根据第一控件的控件信息精准确定第一图层的图层类型。
[0013] 根据第一方面,或者以上第一方面的任意一种实现方式,在对所述控件名进行解析之前,所述方法还包括:将所述控件名和所述尺寸信息作为检索关键词;根据所述关键词,在图层标识记录库中查找与所述关键词匹配的控件;在查找到与所述关键词匹配的控件时,将所述控件对应的图层类型确定为所述第一图层的图层类型;在未查找到与所述关键词匹配的控件时,执行对所述控件名进行解析的步骤。这样,在每次根据获取的第一控件的控件信息确定第一图层的图层类型前先根据控件名和尺寸信息进行查表操作,在操作匹配的控件时,直接将查找到的控件对应的图层类型确定为第一图层的图层类型,从而无需根据第一控件的控件信息进行分析处理,加快了处理速度,在未查找时,才根据第一控件的控件信息进行分析处理,从而既兼顾速度,避免对资源的占用,又能确定合适的图层类型。
[0014] 根据第一方面,或者以上第一方面的任意一种实现方式,在根据所述第一控件的控件信息无法确定所述第一图层的图层类型时,获取所述第一应用当前显示的画面,所述当前显示的画面中包括所述第一控件;根据所述当前显示的画面中所述第一控件显示的内容确定所述第一图层的图层类型。这样,在根据第一控件的控件信息无法确定第一图层的图层类型时,通过对第一应用当前显示的画面进行分析,从而能够准确的确定出第一控件所在的第一图层的图层类型,进而保证后续基于图层类型对图层的分离绘制。
[0015] 根据第一方面,或者以上第一方面的任意一种实现方式,所述根据所述第二控件的控件信息确定所述第二图层的图层类型,包括:从所述第二控件的控件信息中提取所述第二控件的控件名和所述第二控件的尺寸信息;对所述控件名进行解析,在从所述控件名中解析出所述第二控件的控件类型、所述第一应用的包名和所述第二控件所在的界面信息时,根据所述控件类型、所述包名、所述界面信息和所述尺寸信息,确定所述第二图层的图层类型;在从所述控件名中解析出所述第二控件的控件类型和所述第二控件所在的界面信息,未解析出所述第一应用的包名时,获取绘制所述第二控件的进程的进程标识号PID,根据所述PID确定所述第二控件的来源,根据所述控件类型、所述来源、所述界面信息和所述尺寸信息,确定所述第二图层的图层类型,所述来源包括所述第一应用的包名。这样,根据第二控件的控件类型便可以确定第二控件的用途,根据第一应用的包名便可以确定第一应用的应用类型,进而根据第二控件的用途,所在第一应用的应用类型,并结合第二控件的尺寸信息和在第一应用中具体的界面信息,便能够精准的识别出市面上大部分应用中包括的第二控件所在的图层的图层类型。
[0016] 根据第一方面,或者以上第一方面的任意一种实现方式,在根据所述第二控件的控件信息无法确定所述第二图层的图层类型时,获取所述第一应用当前显示的画面,所述当前显示的画面中包括所述第二控件;根据所述当前显示的画面中所述第二控件显示的内容确定所述第二图层的图层类型。这样,在根据第二控件的控件信息无法确定第二图层的图层类型时,通过对第一应用当前显示的画面进行分析,从而能够准确的确定出第二控件所在的第二图层的图层类型,进而保证后续基于图层类型对图层的分离绘制。
[0017] 根据第一方面,或者以上第一方面的任意一种实现方式,所述根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并在所述第一电子设备的屏幕显示所述第一画面,将所述第二显示画面投射到第二电子设备的屏幕进行显示,包括:根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并将所述第一显示画面缓存到第一显示缓存,将所述第二显示画面缓存到第二显示缓存;按照缓存顺序,从所述第一显示缓存中取出所述第一显示画面,并将所述第一显示画面在所述第一电子设备的屏幕进行显示;对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容;将所述投屏内容发送至所述第二电子设备,供所述第二电子设备解码所述投屏内容,得到所述第二显示画面,并在所述第二电子设备的屏幕进行显示。这样,通过将需要在不同电子设备的屏幕显示的显示画面缓存到不同的显示缓存中,然后从对应的显示缓存中取出显示画面送显,从而既可以实现对缓存内容的批量处理,又可以避免线程拥堵,保证传送的显示画面的流畅性。
[0018] 根据第一方面,或者以上第一方面的任意一种实现方式,所述根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并将所述第一显示画面缓存到第一显示缓存,将所述第二显示画面缓存到第二显示缓存,包括:确定所述第一显示缓存对应的第一图层过滤规则和所述第二显示缓存对应的第二图层过滤规则;根据所述第一图层过滤规则、所述第一图层的图层类型和所述第二图层的图层类型,确定所述第一显示画面包括所述第一图层和所述第二图层;获取所述第一图层中所述第一控件的资源和所述第二图层中所述第二控件的资源,根据所述第一控件的资源和所述第二控件的资源,生成所述第一显示画面,并将所述第一显示画面缓存到第一显示缓存;根据所述第二图层过滤规则、所述第一图层的图层类型和所述第二图层的图层类型,确定所述第二显示画面包括所述第一图层;获取所述第一图层中所述第一控件的资源,根据所述第一控件的资源生成所述第二显示画面,并将所述第二显示画面缓存到所述第二显示缓存。这样,通过为不同的显示缓存设置不同的图层过滤规则,从而在生成显示画面时,能够根据对应显示缓存的图层过滤规则和确定的各图层的图层类型确定该显示缓存中缓存的显示画面需要包括的控件,进而获取该控件的资源进行显示画面的绘制,得到适合不同电子设备显示的显示画面。
[0019] 根据第一方面,或者以上第一方面的任意一种实现方式,所述确定所述第一显示缓存对应的第一图层过滤规则和所述第二显示缓存对应的第二图层过滤规则,包括:获取所述第一电子设备的第一设备标识和所述第二电子设备的第二设备标识;在图层过滤规则表中查找与所述第一设备标识匹配的图层过滤规则,将查找到的图层过滤规则确定为所述第一显示缓存对应的所述第一图层过滤规则;在所述图层过滤规则表中查找与所述第二设备标识匹配的图层过滤规则,将查找到的图层过滤规则确定为所述第二显示缓存对应的所述第二图层过滤规则。这样,通过预先确定图层过滤规则,并进行存储,在需要进行图层过滤时,直接获取已有的图层过滤规则,方便快速。
[0020] 根据第一方面,或者以上第一方面的任意一种实现方式,所述确定所述第一显示缓存对应的第一图层过滤规则和所述第二显示缓存对应的第二图层过滤规则,包括:在所述第一电子设备的屏幕上显示可供用户操作的图层过滤规则决策界面,所述图层过滤规则决策界面包括所述第一控件和所述第一控件所在的所述第一图层的图层类型,所述第二控件和所述第二控件所在的所述第二图层的图层类型;响应于用户为所述第一显示缓存设置所述第一图层过滤规则的操作行为,生成所述第一图层过滤规则;响应于用户为所述第二显示缓存设置所述第二图层过滤规则的操作行为,生成所述第二图层过滤规则。这样,通过提供用户操作入口,由用户决策当前第一应用的图层过滤规则,既提升了用户参与度,又能够使得投屏场景更好的适应于不同的用户需求。
[0021] 根据第一方面,或者以上第一方面的任意一种实现方式,所述对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容,包括:获取所述第一电子设备的第一屏幕纵横比和所述第二电子设备的第二屏幕纵横比;在所述第一屏幕纵横比和所述第二屏幕纵横比不同时,对所述第二显示缓存中的所述第二显示画面进行去黑边处理,并录制去黑边后的所述第二显示画面得到所述投屏内容;在所述第一屏幕纵横比和所述第二屏幕纵横比相同时,对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容。这样,引入去黑边处理,从而可以保证显示在第二电子设备的第二显示画面没有黑边,或者尽可能减小黑边,从而提升了观看投屏画面的用户观看体验。
[0022] 根据第一方面,或者以上第一方面的任意一种实现方式,所述对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容,包括:获取所述第二电子设备的显示能力;根据所述显示能力确定视频流刷新帧率;根据所述视频流刷新帧率,对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容。这样,在录制投屏内容时,第一电子设备先与第二电子设备协商视频流刷新帧率,从而既保证了传输的视频流能在第二电子设备正常显示,又可以避免对带宽的过渡占用。
[0023] 根据第一方面,或者以上第一方面的任意一种实现方式,所述第一应用为会议应用,所述第一控件为视频类控件,所述第一图层的图层类型为视频流播放图层;所述第二控件为按钮类控件,所述第二图层的图层类型为会议控制按钮图层。这样,在第一电子设备的屏幕显示的第一显示画面中既包括了通过视频流播放控件显示的与会人员的视频画面,又包括了可供用户操作的会议控制按钮控件,而在第二电子设备的屏幕显示的第二显示画面中仅包括通过视频流播放控件显示的与会人员的视频画面,不包括可供用户操作的会议控制按钮控件,从而通过第一电子设备参加会议的用户,既可以观看会议画面,又可以操作会议控制按钮,而通过第二电子设备观看会议的用户,不会受第一电子设备侧进行的操作干扰。
[0024] 根据第一方面,或者以上第一方面的任意一种实现方式,所述第一应用为会议应用,所述第一控件为白板批注控件,所述第一图层的图层类型为白板批注图层;所述第二控件为按钮类控件,所述第二图层的图层类型为会议控制按钮图层。这样,在第一电子设备的屏幕显示的第一显示画面中既包括了白板内容,又包括了可供用户操作的会议控制按钮控件,而在第二电子设备的屏幕显示的第二显示画面中仅包括白板内容,不包括可供用户操作的会议控制按钮控件,从而通过第一电子设备参加会议的用户,既可以观看在白板进行绘制,又可以操作会议控制按钮,而通过第二电子设备观看会议的用户,不会受第一电子设备侧进行的操作干扰。
[0025] 第二方面,提供一种电子设备。所述电子设备为第一电子设备,所述第一电子设备安装有第一应用,所述第一应用包括第一控件和第二控件,所述第一控件位于第一图层,所述第二控件位于第二图层,所述电子设备包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述一个或多个计算机程序存储在所述存储器上,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:获取所述第一控件的控件信息和所述第二控件的控件信息;根据所述第一控件的控件信息确定所述第一图层的图层类型;根据所述第二控件的控件信息确定所述第二图层的图层类型,所述第一图层的图层类型与所述第二图层的图层类型不同;根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并在所述第一电子设备的屏幕显示所述第一画面,将所述第二显示画面投射到第二电子设备的屏幕进行显示,所述第一显示画面包括所述第一控件和所述第二控件,所述第二显示画面包括所述第一控件,不包括所述第二控件。
[0026] 根据第二方面,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:从所述第一控件的控件信息中提取所述第一控件的控件名和所述第一控件的尺寸信息;对所述控件名进行解析,在从所述控件名中解析出所述第一控件的控件类型、所述第一应用的包名和所述第一控件所在的界面信息时,根据所述控件类型、所述包名、所述界面信息和所述尺寸信息,确定所述第一图层的图层类型;在从所述控件名中解析出所述第一控件的控件类型和所述第一控件所在的界面信息,未解析出所述第一应用的包名时,获取绘制所述第一控件的进程的进程标识号PID,根据所述PID确定所述第一控件的来源,根据所述控件类型、所述来源、所述界面信息和所述尺寸信息,确定所述第一图层的图层类型,所述来源包括所述第一应用的包名。
[0027] 根据第二方面,或者以上第二方面的任意一种实现方式,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:将所述控件名和所述尺寸信息作为检索关键词;根据所述关键词,在图层标识记录库中查找与所述关键词匹配的控件;在查找到与所述关键词匹配的控件时,将所述控件对应的图层类型确定为所述第一图层的图层类型;在未查找到与所述关键词匹配的控件时,执行对所述控件名进行解析的步骤。
[0028] 根据第二方面,或者以上第二方面的任意一种实现方式,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:在根据所述第一控件的控件信息无法确定所述第一图层的图层类型时,获取所述第一应用当前显示的画面,所述当前显示的画面中包括所述第一控件;根据所述当前显示的画面中所述第一控件显示的内容确定所述第一图层的图层类型。
[0029] 根据第二方面,或者以上第二方面的任意一种实现方式,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:从所述第二控件的控件信息中提取所述第二控件的控件名和所述第二控件的尺寸信息;对所述控件名进行解析,在从所述控件名中解析出所述第二控件的控件类型、所述第一应用的包名和所述第二控件所在的界面信息时,根据所述控件类型、所述包名、所述界面信息和所述尺寸信息,确定所述第二图层的图层类型;在从所述控件名中解析出所述第二控件的控件类型和所述第二控件所在的界面信息,未解析出所述第一应用的包名时,获取绘制所述第二控件的进程的进程标识号PID,根据所述PID确定所述第二控件的来源,根据所述控件类型、所述来源、所述界面信息和所述尺寸信息,确定所述第二图层的图层类型,所述来源包括所述第一应用的包名。
[0030] 根据第二方面,或者以上第二方面的任意一种实现方式,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:在根据所述第二控件的控件信息无法确定所述第二图层的图层类型时,获取所述第一应用当前显示的画面,所述当前显示的画面中包括所述第二控件;根据所述当前显示的画面中所述第二控件显示的内容确定所述第二图层的图层类型。
[0031] 根据第二方面,或者以上第二方面的任意一种实现方式,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并将所述第一显示画面缓存到第一显示缓存,将所述第二显示画面缓存到第二显示缓存;按照缓存顺序,从所述第一显示缓存中取出所述第一显示画面,并将所述第一显示画面在所述第一电子设备的屏幕进行显示;对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容;将所述投屏内容发送至所述第二电子设备,供所述第二电子设备解码所述投屏内容,得到所述第二显示画面,并在所述第二电子设备的屏幕进行显示。
[0032] 根据第二方面,或者以上第二方面的任意一种实现方式,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:确定所述第一显示缓存对应的第一图层过滤规则和所述第二显示缓存对应的第二图层过滤规则;根据所述第一图层过滤规则、所述第一图层的图层类型和所述第二图层的图层类型,确定所述第一显示画面包括所述第一图层和所述第二图层;获取所述第一图层中所述第一控件的资源和所述第二图层中所述第二控件的资源,根据所述第一控件的资源和所述第二控件的资源,生成所述第一显示画面,并将所述第一显示画面缓存到第一显示缓存;根据所述第二图层过滤规则、所述第一图层的图层类型和所述第二图层的图层类型,确定所述第二显示画面包括所述第一图层;获取所述第一图层中所述第一控件的资源,根据所述第一控件的资源生成所述第二显示画面,并将所述第二显示画面缓存到所述第二显示缓存。
[0033] 根据第二方面,或者以上第二方面的任意一种实现方式,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:获取所述第一电子设备的第一设备标识和所述第二电子设备的第二设备标识;在图层过滤规则表中查找与所述第一设备标识匹配的图层过滤规则,将查找到的图层过滤规则确定为所述第一显示缓存对应的所述第一图层过滤规则;在所述图层过滤规则表中查找与所述第二设备标识匹配的图层过滤规则,将查找到的图层过滤规则确定为所述第二显示缓存对应的所述第二图层过滤规则。
[0034] 根据第二方面,或者以上第二方面的任意一种实现方式,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:在所述第一电子设备的屏幕上显示可供用户操作的图层过滤规则决策界面,所述图层过滤规则决策界面包括所述第一控件和所述第一控件所在的所述第一图层的图层类型,所述第二控件和所述第二控件所在的所述第二图层的图层类型;响应于用户为所述第一显示缓存设置所述第一图层过滤规则的操作行为,生成所述第一图层过滤规则;响应于用户为所述第二显示缓存设置所述第二图层过滤规则的操作行为,生成所述第二图层过滤规则。
[0035] 根据第二方面,或者以上第二方面的任意一种实现方式,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:获取所述第一电子设备的第一屏幕纵横比和所述第二电子设备的第二屏幕纵横比;在所述第一屏幕纵横比和所述第二屏幕纵横比不同时,对所述第二显示缓存中的所述第二显示画面进行去黑边处理,并录制去黑边后的所述第二显示画面得到所述投屏内容;在所述第一屏幕纵横比和所述第二屏幕纵横比相同时,对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容。
[0036] 根据第二方面,或者以上第二方面的任意一种实现方式,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:获取所述第二电子设备的显示能力;根据所述显示能力确定视频流刷新帧率;根据所述视频流刷新帧率,对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容。
[0037] 第二方面以及第二方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第二方面以及第二方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0038] 第三方面,提供一种计算机可读存储介质。该介质包括计算机程序,当计算机程序在电子设备上运行时,使得电子设备执行第一方面以及第一方面中任意一项中的投屏方法。示例性的,电子设备可以为手机。
[0039] 第三方面以及第三方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第三方面以及第三方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0040] 第四方面,本申请实施例提供了一种计算机程序,该计算机程序包括用于执行第一方面以及第一方面的任意可能的实现方式中的方法的指令。
[0041] 第四方面以及第四方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第四方面以及第四方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
[0042] 第五方面,本申请实施例提供了一种芯片,该芯片包括处理电路、收发管脚。其中,该收发管脚、和该处理电路通过内部连接通路互相通信,该处理电路执行第二方面或第二方面的任一种可能的实现方式中的方法,以控制接收管脚接收信号,以控制发送管脚发送信号。示例性的,芯片为电子设备的芯片,电子设备可以为手机。
[0043] 第五方面以及第五方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第五方面以及第五方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。

附图说明

[0044] 图1是示例性示出的开启投屏功能的场景示意图之一;
[0045] 图2是示例性示出的开启投屏功能的场景示意图之二;
[0046] 图3是示例性示出的采用本申请实施例提供的投屏方法投屏后终端和大屏显示内容的场景示意图之一;
[0047] 图4是示例性示出的手机的软件结构示意图;
[0048] 图5是示例性示出的会议应用程序显示的画面包括的图层结构示意图;
[0049] 图6是示例性示出的手机和大屏包括的模块的示意图;
[0050] 图7是示例性示出的本申请实施例提供的投屏方法的流程示意图;
[0051] 图8是示例性示出的本申请实施例提供的投屏方法中获取到的控件信息示意图;
[0052] 图9是示例性示出的本申请实施例提供的由用户决策图层过滤规则的界面示意图;
[0053] 图10是示例性示出的采用本申请实施例提供的投屏方法在手机和大屏分别显示不同画面的模块交互示意图之一;
[0054] 图11是示例性示出的采用本申请实施例提供的投屏方法绘制需要显示的画面的时序图之一;
[0055] 图12是示例性示出的采用本申请实施例提供的投屏方法绘制需要显示的画面的时序图之二;
[0056] 图13是示例性示出的采用本申请实施例提供的投屏方法投屏后终端和大屏显示内容的场景示意图之二;
[0057] 图14a、图14b是示例性示出的采用本申请实施例提供的投屏方法投屏后终端和大屏显示内容的场景示意图之三;
[0058] 图15是示例性示出的采用本申请实施例提供的投屏方法在手机和大屏分别显示不同画面的模块交互示意图之一;
[0059] 图16a是示例性示出的本申请实施例中手机的物理屏幕和虚拟屏幕中的层关系示意图;
[0060] 图16b是示例性示出的本申请实施例中屏幕坐标系建立方法的示意图;
[0061] 图17是本申请实施例提供的一种装置的结构示意图。

具体实施方式

[0062] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0063] 本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
[0064] 本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
[0065] 在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
[0066] 在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
[0067] 在对本申请实施例的技术方案说明之前,首先结合附图对本申请实施例的应用场景进行说明。为了便于描述,本申请实施例以需要投射的画面内容为使用会议应用程序进行会议时的画面为例,并以手机这一电子设备作为投射会议过程的画面的投屏段,以电视机作为显示投射画面的大屏。
[0068] 下面结合图1对手机开启投屏功能的过程进行说明。
[0069] 参见图1,示例性的,手机100的显示界面显示的是手机的设置页面10a,设置页面10a上包括一个或多个控件,例如声音和振动设置选项、通知设置选项、设备连接设置选项、应用设置选项、电池设置选项、存储设置选项和安全设置选项等。
[0070] 示例性的,当用户点击设置页面10a中的设备连接10a‑1后,手机响应于用户的操作行为,从设置页面10a跳转到设备连接页面10b。
[0071] 示例性的,设备连接页面10b上包括一个或多个控件,例如蓝牙设置选项、NFC(Near Field Communication,近场通信)设置选项、手机投屏设置选项、USB(Universal Serial Bus,通用串行总线)设置选项和打印设置选项等。
[0072] 示例性的,当用户点击了设备连接页面10b中的手机投屏10b‑1后,手机响应于用户的操作行为,从设备连接页面10b跳转到手机投屏页面10c。
[0073] 示例性的,手机投屏页面10c上包括了一个开启手机投屏功能的控件,例如图1中示出的无线投屏设置选项10c‑1。
[0074] 可理解的,在手机投屏页面10c中显示的开启手机投屏功能的设置选项,除了被命名为图1中的“无线投屏”,在实际的应用场景中,因手机型号、系统版本的不同,还可能被命名为“多屏互动”、“屏幕镜像”等,此处不再一一列举,本实施对此不做限制。
[0075] 示例性的,当用户点击了手机投屏页面10c中的无线投屏设置选项10c‑1后,手机响应于用户的操作行为,会在手机投屏页面10c的空白区域显示可用设备列表,并使用控件10c‑2在可用设备列表的显示区域显示“正在搜索可用设备...请确保大屏设备无线投屏功能已开启”的内容。
[0076] 可理解的,图1中给出的仅为一种搜索可用的大屏设备时,可用设备列表的一种具体显示样式,是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。在实际的应用场景中,可以设置用户点击了手机投屏页面10c中的无线投屏设置选项10c‑1后,手机响应于用户的操作行为具体是从手机投屏页面10c跳转到专门用于显示可用设备列表页面。
[0077] 示例性的,当搜索到可用的大屏设备后,会使用控件10c‑3在可用设备列表的显示区域显示搜索到的大屏设备,例如大屏1和大屏2。
[0078] 可理解的,在实际的应用场景中,搜索到的大屏设备可以为电视、投影仪等,此处不再一一列举,本实施对此不做限制。
[0079] 示例性的,在实际的应用场景中,在大屏设备为电视时,呈现的屏幕可以是一个电视屏幕,也可以是由多个电视屏幕拼接成的一个大屏幕,本申请对此不做限制。
[0080] 示例性的,当用户点击了手机投屏页面10c中的大屏1(10c‑3‑1)后,手机响应于用户的操作行为,向大屏1发起配对请求,并建立网络连接,之后手机显示界面显示的内容便会投射到大屏1上。
[0081] 由此,完成了以设置页面为入口,在手机开启投屏功能的操作。
[0082] 此外,本申请实施例还给出了另一种开始投屏功能的方式,下面结合图2对手机开启投屏功能的过程进行说明。
[0083] 参见图2,示例性的,手机100的显示界面显示的是使用会议应用程序进行会议过程中的画面20,当用户从手机的上边缘沿着箭头方向向下滑动时,手机响应于用户的操作行为,在显示界面的上边缘区域显示下拉通知栏30。
[0084] 示例性的,下拉通知栏30包括一个或多个控件,例如时间栏、Wi‑Fi设置选项、蓝牙设置选项、移动数据设置选项、自动旋转设置选项和屏幕镜像设置选项等。
[0085] 示例性的,当用户点击了下拉通知栏30中的屏幕镜像30‑1后,手机响应于用户的操作行为,可以在显示界面弹出搜索可用设备的界面,并在搜索到可用的大屏设备后,在该界面中显示,以供用户选择需要进行配对,建立网络连接的大屏设备。
[0086] 可理解的,在显示界面弹出的搜索可用设备的界面,可用全屏覆盖整个显示界面,也可以仅覆盖局部区域,具体的实现方式本申请不做限制。
[0087] 由此,完成了以下拉通知栏为入口,在手机开启投屏功能的操作。
[0088] 示例性的,在采用图1或图2所示的开启投屏功能的方式,使手机和大屏建立网络连接后,采用本申请实施例提供的投屏方法对当前会议的画面进行投屏,手机的操作系统便会确定需要显示的画面中各个控件所在的图层,然后根据预设的过滤规则,对需要在手机屏幕显示的画面和需要在大屏(例如电视屏幕)显示的画面进行过滤,然后对过滤后的图层进行合成渲染,最后将得到的画面分别送显,从而实现手机和大屏分别显示会议过程中不同的内容。
[0089] 参见图3,示例性的,手机100的显示界面显示的是会议过程中的画面20,在该画面20中包括视频流播放图层20‑1和会议控制按钮图层20‑2。
[0090] 可理解的,视频流播放图层20‑1包括一个或多个视频流播放控件,这些视频流播放控件用于显示会议过程中获取到的视频流。
[0091] 此外,需要说明的是,在一个例子中,可以将多个视频流播放控件集成在一个视频流播放图层中,对于这种应用场景,会议应用程序对应的服务器在向手机传输视频流的时候,可以将多个视频流播放控件对应的视频流合为一路进行传输。
[0092] 相应地,在另一个例子中,可以设置每一个视频流播放控件对应一个视频流播放图层,对于这种应用场景,会议应用程序对应的服务器在向手机传输视频流的时候,需要分别向不同的视频流播放控件传输视频流。
[0093] 应当理解的是,上述说明仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0094] 此外,参见图3,会议控制按钮图层20‑2可以包括一个或多个控件,例如静音设置选项、视频设置选项、共享设置选项、与会者设置选项和更多设置选项等,此处不再一一列举,本申请对此不做限制。
[0095] 针对图3中手机100显示的画面20,假设预设的过滤规则为投射到大屏200上的画面内容仅包括用于显示视频流的视频流播放控件,即大屏200上的画面包括的图层只有视频流播放图层。基于此,对于手机100的显示界面显示的画面20,经过本申请实施例提供的投屏方法的处理,最终投射在大屏200的显示界面上的画面20’只包括了视频流播放图层20‑1的镜像内容20‑1’。这样,即使用户在手机上通过会议控制按钮图层20‑2中的会议控制按钮进行操作,如静音,添加与会人等,大屏的显示界面始终显示的是视频流播放控件20‑1的镜像内容20‑1’,对会议控制按钮图层20‑2中会议控制按钮的操作过程不会投射到大屏,从而不会干扰用户观看大屏显示的视频流画面,实现了控制和显示的分离。
[0096] 此外,需要说明的是,图1至图3及后续实施例的描述涉及到的附图中所涉及的手机的显示界面显示的控件的名称和数量,以及下拉通知栏中的控件的名称和数量仅为示意性举例,本申请对此不做限制。
[0097] 此外,需要说明的是,本申请实施例提供的投屏方法不仅可以适用于一对一投屏的应用场景,也可以适用于一对多投屏的应用场景,只要开启投屏功能的手机,或其他电子设备支持一对一投屏,一对多投屏即可,关于一对一投屏和一对多投屏的具体实现细节,本申请不做描述。
[0098] 此外,可理解的是,本申请实施例的描述中,是以手机为例进行说明,在其他实施例中,本申请同样适用于膝上型计算机、桌上型计算机、掌上型计算机(如平板电脑)等支持投屏功能的电子设备。
[0099] 为了更好的描述本申请实施例提供的投屏方法,以安装会议应用程序,进行投屏的电子设备为手机,结合图4对手机的软件结构进行描述。
[0100] 参见图4,图4为本申请实施例的手机100的软件结构框图。分层架构将软件分成若干层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。
[0101] 为了便于说明,本申请实施例以安卓(Android)系统为例,对Android系统的手机100的软件结构进行说明。
[0102] 具体的说,在一些实施例中,将Android系统分为五层,从上至下分别为应用程序层、应用程序框架层(也称:系统框架层)、系统库和安卓运行时层、硬件抽象层(hardware abstraction layer,HAL)和内核层。
[0103] 应用程序层可以包括相机,图库,日历,WLAN,会议、音乐,视频等应用程序(下文简称为应用)。需要说明的是,图4中示出的应用程序层所包括的应用仅为示例性说明,本申请对此不作限定。可理解的,应用程序层包括的应用并不构成对手机100的具体限定。在本申请另一些实施例中,相较于图4所示应用程序层包含的应用,手机100可包括更多或更少的应用,不同的手机100可以包括相同的应用,也可包括完全不同的应用。
[0104] 应用程序框架层为应用程序层的应用提供应用编程接口(Application Programming Interface,API)和编程框架,包括各种组件和服务来支持开发者的安卓开发。应用程序框架层还包括一些预先定义的函数。如图4所示,应用程序框架层可包括窗口管理器、内容提供器、视图系统、资源管理器、通知管理器、摄像头服务等。
[0105] 窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
[0106] 内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
[0107] 视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
[0108] 资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
[0109] 通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
[0110] 摄像头服务用于响应于应用的请求,调用摄像头(包括前置摄像头和/或后置摄像头)。
[0111] 此外,为了实现本申请实施例提供的投屏方法,应用程序框架层还包括显示管理框架和显示渲染框架。其中,显示管理框架用于识别会议应用中包括的控件所属的图层,并进行标注和记录;显示渲染框架用于根据预设的过滤规则对显示管理框架识别标记的图层进行过滤,并将过滤后的图层进行合成渲染。
[0112] 示例性的,对于图3手机100的显示界面显示的画面20,在一个例子中,是由图5示出的视频流播放图层20‑1和会议控制按钮图层20‑2两个图层合成渲染的。
[0113] 具体的,位于应用程序框架层的显示管理框架通过对应用程序层安装的会议应用请求绘制的控件进行识别,进而确定每一个控件的图层类型,并进行标记,例如通过识别确定用于显示视频流的控件,如SurfaceView控件对应的图层类型为视频流播放图层,即图5中的20‑1,对于静音选项设置控件、视频选项设置控件、共享选项设置控件、与会者选项设置控件等会议控制按钮对应的图层类型为会议控制按钮图层,即图5中的20‑2。
[0114] 系统库和安卓运行时层包括系统库和安卓运行时(Android Runtime)。系统库可以包括多个功能模块。例如:表面管理器、二维图形引擎、三维图形处理库(例如:OpenGL ES),媒体库、字体库等。其中,浏览器内核负责对网页语法的解释(如标准通用标记语言下的一个应用HTML、JavaScript)并渲染(显示)网页;二维图形引擎用于实现二维图形绘图,图像渲染,合成和图层处理等;三维图形处理库用于实现三维图形绘图,图像渲染,合成和图层处理等;媒体库用于实现不同流媒体的输入;字体库用于实现不同字体的输入。
[0115] 安卓运行时负责安卓系统的调度和管理,具体包括核心库和虚拟机。其中,核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库;虚拟机用于运行使用java语言开发的Android应用。
[0116] 此外,需要说明的,为了使Android应用能够运行在虚拟机中,应用程序层和应用程序框架层均需运行在虚拟机中。在运行Android应用时,虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。
[0117] 此外,需要说明的,在实际应用中,虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
[0118] 可理解的,图4示出的应用程序框架层、系统库与运行时层包含的部件,并不构成对手机100的具体限定。在实际应用中,手机100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。
[0119] HAL层为位于操作系统内核与硬件电路之间的接口层。HAL层包括但不限于:音频硬件抽象层(Audio HAL)和摄像头硬件抽象层(Camera HAL)。其中,Audio HAL用于对音频流进行处理,例如,对音频流进行降噪、定向增强等处理,Camera HAL用于对图像流进行处理。
[0120] 内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。其中,该硬件可以包括摄像头、显示屏,麦克风,处理器,以及存储器等器件。
[0121] 在本申请的实施例中,硬件中的显示屏可以显示会议过程中的画面,硬件中的摄像头可以用于采集图像,硬件中的麦克风可以用于采集声音信号,并生成模拟音频电信号。
[0122] 此外,需要说明的是,在实际的应用场景中,想要实现本申请实施例提供的投屏方法,用于投射内容的电子设备(如手机)和用于显示电子设备投射的内容的大屏(如电视)至少需要包括图6示出的内容。
[0123] 以需要投射的内容为会议过程中的画面为例,参见图6用于投射内容的手机至少需要在应用程序层安装会议应用程序,在应用程序框架层中引入用于记录图层标识信息的图层标识记录库、用于识别控件对应的图层的图层标识模块、用于对图层标识模块标识后的图层进行过滤的图层过滤模块和用于将图层过滤模块过滤后的图层进行合成渲染的合成渲染模块,以及位于系统库和安卓运行时层的协同助手和网络通信模块。
[0124] 其中,图层标识记录库和图层标识模块具体位于应用程序框架层的显示管理框架中,图层过滤模块和合成渲染模块具体位于应用程序框架层的显示渲染框架中。
[0125] 由于用于显示手机投射的内容的大屏只需要用来显示投射的内容,不需要进行图层的识别和合成渲染,因而大屏至少需要包括位于应用程序框架层的投屏显示模块和用于将手机传输来的内容进行合成渲染的合成渲染模块,以及位于系统库和安卓运行时层的协同助手和网络通信模块。
[0126] 基于上述结构,在实际的应用场景中,用户通过图1或图2给出的开启投屏功能的方式触发开启投屏功能的操作,手机响应于用户的操作行为,借助位于系统库和安卓运行时层的协同助手匹配到同样具有协同助手,即支持投屏功能的大屏,并通过网络通信模块与匹配到的大屏建立通信连接。
[0127] 当用户开启会议应用程序,并加入会议后,位于应用程序层的会议应用程序便会与应用程序框架层中显示管理框架中的图层标识记录库、图层标识模块进行数据交互,在完成图层识别后,交由应用程序框架层中显示渲染框架中的图层过滤模块进行过滤,并将过滤出的图层交由合成渲染模块进行合成渲染,进而得到需要在手机屏幕显示的画面(例如画面A)和需要在大屏显示的画面(例如画面B)。
[0128] 示例性的,在得到画面A和画面B后,画面A可以直接通过手机的显示驱动进行送显,进而在手机屏幕显示画面A。
[0129] 此外,可理解的,对于投屏功能,实际就是基于镜像协议进行镜像处理,即在手机的系统库和安卓运行时层的投屏录制模块中对画面B进行录制,并在录制完成后借助通过网络通信模块建立的通信连接传输给大屏,由大屏通过投屏显示模块进行显示处理,最终在大屏上呈现出画面B。
[0130] 此外,需要说明的是,在实际的应用场景中,待投屏的应用不局限于会议应用,上述描述仅仅是为了便于说明。
[0131] 为了对本实施例提供的投屏方法有一个系统的了解,以下结合图7进行具体说明。
[0132] 首先,需要说明的是,本实施例提供的投屏方法具体是应用于发起投屏的第一电子设备,例如可以是手机。
[0133] 示例性的,第一电子设备中安装有第一应用,为了便于理解以下仍以会议应用为例。
[0134] 示例性的,第一应用包括第一控件和第二控件,且第一控件位于第一图层,第二控件位于第二图层。
[0135] 示例性的,第一控件和第二控件为不同类型的控件。
[0136] 示例性的,在一种实现场景中,第一控件为视频类控件,例如可以是SurfaceView,相应地,第一图层的图层类型为视频流播放图层;第二控件为按钮类控件,例如可以是Button,相应地,第二图层的图层类型为会议控制按钮图层。
[0137] 示例性的,在另一种实现场景中,第一控件为白板批注控件,例如可以是BlankWindow,相应地,第一图层的图层类型为白板批注图层;第二控件为按钮类控件,例如可以是Button,相应地,第二图层的图层类型为会议控制按钮图层。
[0138] 参见图7,关于本申请提供的投屏方法,具体包括以下步骤:
[0139] 步骤S1:获取所述第一控件的控件信息和所述第二控件的控件信息。
[0140] 为了便于说明,本实施例仍以第一应用为会议应用为例,则执行步骤S1的前提是用户已经采用上述图1或图2给出的开启投屏功能的方式完成了手机100和电视200之间的通信连接。
[0141] 此外,需要说明的是,对于任意应用的界面,通常都是由多个图层渲染合成的,并且包括的图层至少有两种类型,以会议应用为例,包括的图层至少有视频流播放图层和会议控制按钮图层。
[0142] 示例性的,每一个类型的图层中至少包括一个控件。即,第一图层中的第一控件的数量可以是一个或多个,第二图层中的第二控件的数量也可以是一个或多个。例如,在会议应用中,视频流播放图层中包括一个或多个视频流播放控件,会议控制按钮图层中包括一个或多个会议控制按钮控件,详见正对图3的描述,此次不再赘述。
[0143] 示例性的,关于获取第一控件的控件信息和第二控件的控件信息的操作,可以是由手机100中位于应用程序框架层中的显示处理模块调用预置的控件信息抓取程序获取到的。
[0144] 步骤S2:根据所述第一控件的控件信息确定所述第一图层的图层类型。
[0145] 示例性的,以手机的操作系统为Android系统为例,获取到的会议应用中各控件的控件信息的格式可以如图8所示。
[0146] 参见图8,获取的控件信息包括但不限于控件名(Name)和尺寸信息(disp frame),比如还可以包括窗口类型,本申请对此不做限制。
[0147] 假设,第一控件有两个分别为用于显示与会人员的视频画面的,例如控件a和控件b,有一个供用户操作的第二控件,例如控件c。示例性的,图8中的“SurfaceView‑com.huawei.welink/com.[...]on.view.activity.InMeetingActivity#0rel‑2”为控件a的控件名,“0 0 283 283”为控件a的尺寸信息;“SurfaceView‑com.huawei.welink/com.[...]on.view.activity.InMeetingActivity#1rel‑1”为控件b的控件名,“0 283 2288 1080”为控件b的尺寸信息;“Button‑com.huawei.welink/com.[...]on.view.activity.InMeetingActivity#0rel‑0”为控件c的控件名,“413 2130 625 2200”为控件c的尺寸信息。
[0148] 其中,控件名通常包括3部分,以控件a的控件名为例,“SurfaceView”表示控件类型,该类型表示控件a是用于显示视频流内容的,“com.huawei.welink”表示控件a所在应用的应用包名,根据应用包名可以确定应用类型,如welink为一款会议应用,“on.view.activity.InMeetingActivity”表示当前显示界面会议界面,即界面信息是会议界面。
[0149] 综上,在根据第一控件的控件信息确定第一图层的图层类型时,流程为:
[0150] 首先,从所述第一控件的控件信息中提取所述第一控件的控件名和所述第一控件的尺寸信息。例如控件a的控件名“SurfaceView‑com.huawei.welink/com.[...]on.view.activity.InMeetingActivity#0rel‑2”,尺寸信息“0 0 283 283”。
[0151] 然后,对所述控件名进行解析。
[0152] 具体的,在从所述控件名中解析出所述第一控件的控件类型、所述第一应用的包名和所述第一控件所在的界面信息时,根据所述控件类型、所述包名、所述界面信息和所述尺寸信息,确定所述第一图层的图层类型。这样,根据第一控件的控件类型便可以确定第一控件的用途,根据第一应用的包名便可以确定第一应用的应用类型,进而根据第一控件的用途,所在第一应用的应用类型,并结合第一控件的尺寸信息和在第一应用中具体的界面信息,便能够精准的识别出市面上大部分应用中包括的第一控件所在的图层的图层类型。
[0153] 在从所述控件名中解析出所述第一控件的控件类型和所述第一控件所在的界面信息,未解析出所述第一应用的包名时,获取绘制所述第一控件的进程的进程标识号PID,根据所述PID确定所述第一控件的来源,根据所述控件类型、所述来源、所述界面信息和所述尺寸信息,确定所述第一图层的图层类型,所述来源包括所述第一应用的包名。这样,在没有从第一控件的控件名中解析出第一应用的包名时,通过获取绘制第一控件的进程的PID,从而根据唯一的PID可以确定创建该PID对应的进程的来源,即第一应用,进而得到第一应用的包名,这样无论第一控件的控件名中是否有第一应用的包名,均可根据第一控件的控件信息精准确定第一图层的图层类型。
[0154] 此外,为了提升整体效率,可以预先设置图层标识记录库,将已知的各种应用中各种大小,位于各种位置的控件与所在图层的图层类型建立对应关系,从而在对第一控件的控件名进行解析,根据解析结果和位置信息确定图层类型前,先将控件名和尺寸信息作为检索关键词,然后根据关键词在图层标识记录库中查找与该关键词匹配的控件。相应地,在查找到与所述关键词匹配的控件时,将所述控件对应的图层类型确定为所述第一图层的图层类型;在未查找到与该关键词匹配的控件时,在对控件名进行解析,根据解析结果和位置信息确定图层类型。这样不仅能够确定图层类型,同时又能兼顾处理速度和设备资源的消耗。
[0155] 此外,如果在实际的应用场景中,通过查找图层标识记录库的方式和根据第一控件的控件信息确定第一图层的图层类型的方式均无法确定第一图层的图层类型,还可以获取所述第一应用当前显示的画面。
[0156] 需要说明的,所述当前显示的画面中包括所述第一控件。
[0157] 相应地,根据所述当前显示的画面中所述第一控件显示的内容确定所述第一图层的图层类型。
[0158] 具体的,该方式可以是由技术人员通过抓取的页面数据人工确定后更新到图层标识库的,也可以是基于预设的算法,分析确定的。例如,通过对画面中每一控件中显示的内容,以及控件的图标对应的文字分析确定,具体的分析过程,本申请不做赘述。
[0159] 应当理解的是,以上给出的仅仅是几种确定待绘制控件所属图层类型的具体方式,是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0160] 步骤S3:根据所述第二控件的控件信息确定所述第二图层的图层类型。
[0161] 具体的说,在根据第二控件的控件信息确定第二图层的图层类型时,其过程为:
[0162] 从所述第二控件的控件信息中提取所述第二控件的控件名和所述第二控件的尺寸信息;
[0163] 对所述控件名进行解析,在从所述控件名中解析出所述第二控件的控件类型、所述第一应用的包名和所述第二控件所在的界面信息时,根据所述控件类型、所述包名、所述界面信息和所述尺寸信息,确定所述第二图层的图层类型;
[0164] 在从所述控件名中解析出所述第二控件的控件类型和所述第二控件所在的界面信息,未解析出所述第一应用的包名时,获取绘制所述第二控件的进程的进程标识号PID,根据所述PID确定所述第二控件的来源,根据所述控件类型、所述来源、所述界面信息和所述尺寸信息,确定所述第二图层的图层类型,所述来源包括所述第一应用的包名。
[0165] 同样,在对第二控件的控件名进行解析,根据解析结果和位置信息确定图层类型前,先将控件名和尺寸信息作为检索关键词,然后根据关键词在图层标识记录库中查找与该关键词匹配的控件。相应地,在查找到与所述关键词匹配的控件时,将所述控件对应的图层类型确定为所述第二图层的图层类型;在未查找到与该关键词匹配的控件时,在对控件名进行解析,根据解析结果和位置信息确定图层类型。这样不仅能够确定图层类型,同时又能兼顾处理速度和设备资源的消耗。
[0166] 同样,在根据所述第二控件的控件信息无法确定所述第二图层的图层类型时,获取所述第一应用当前显示的画面,所述当前显示的画面中包括所述第二控件;根据所述当前显示的画面中所述第二控件显示的内容确定所述第二图层的图层类型。
[0167] 不难发现,根据第二控件的控件信息确定第二图层的图层类型的过程与步骤S2中根据第一控件的控件信息确定第一图层的图层类型大致相同,此次不在赘述。
[0168] 此外,可理解的,所述第一图层的图层类型与所述第二图层的图层类型不同。例如,在第一控件为视频类控件,如SurfaceView时,第一图层的图层类型为视频流播放图层;在第一控件为白板批注控件时,第一图层的图层类型为白板批注图层;在第二控件为按钮类控件,如button时,第二图层的图层类型为会议控制按钮图层。
[0169] 应当理解的是,上述说明仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0170] 步骤S4:根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并在所述第一电子设备的屏幕显示所述第一画面,将所述第二显示画面投射到第二电子设备的屏幕进行显示。
[0171] 可理解的,在第一应用仅包括第一控件和第二控件时,所述第一显示画面包括所述第一控件和所述第二控件,所述第二显示画面包括所述第一控件,不包括所述第二控件。
[0172] 示例性的,在是的应用场景中,第一应用还可以包括位于其他图层的控件,相应地生成的第一显示画面和第二显示画面也可以根据业务需求包括其他控件,本申请对此不做限制。
[0173] 示例性的,在实际的应用场景中,可以在第一电子设备中分配用于缓存第一显示画面的第一显示缓存和用于缓存第二显示画面的第二显示缓存。
[0174] 相应地,在根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面后,可以先将所述第一显示画面缓存到第一显示缓存,将所述第二显示画面缓存到第二显示缓存;然后,按照缓存顺序,从所述第一显示缓存中取出所述第一显示画面,并将所述第一显示画面在所述第一电子设备的屏幕进行显示;对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容;将所述投屏内容发送至所述第二电子设备,供所述第二电子设备解码所述投屏内容,得到所述第二显示画面,并在所述第二电子设备的屏幕进行显示。这样,通过将需要在不同电子设备的屏幕显示的显示画面缓存到不同的显示缓存中,然后从对应的显示缓存中取出显示画面送显,从而既可以实现对缓存内容的批量处理,又可以避免线程拥堵,保证传送的显示画面的流畅性。
[0175] 此外,可理解的,在实际的应用场景中,为不同的显示缓存设置不同的图层过滤规则,从而在生成显示画面时,能够根据对应显示缓存的图层过滤规则和确定的各图层的图层类型确定该显示缓存中缓存的显示画面需要包括的控件,进而获取该控件的资源进行显示画面的绘制,得到适合不同电子设备显示的显示画面。
[0176] 具体的,在根据第一图层的图层类型和第二图层的图层类型生成第一显示画面和第二显示画面,并将生成的显示画面缓存到对应的显示缓存的过程,具体如下:首先,确定所述第一显示缓存对应的第一图层过滤规则和所述第二显示缓存对应的第二图层过滤规则然后,根据所述第一图层过滤规则、所述第一图层的图层类型和所述第二图层的图层类型,确定所述第一显示画面包括所述第一图层和所述第二图层;接着,获取所述第一图层中所述第一控件的资源和所述第二图层中所述第二控件的资源,根据所述第一控件的资源和所述第二控件的资源,生成所述第一显示画面,并将所述第一显示画面缓存到第一显示缓存;接着,根据所述第二图层过滤规则、所述第一图层的图层类型和所述第二图层的图层类型,确定所述第二显示画面包括所述第一图层;接着,获取所述第一图层中所述第一控件的资源,根据所述第一控件的资源生成所述第二显示画面,并将所述第二显示画面缓存到所述第二显示缓存。
[0177] 示例性的,本实施例给出两种确定图层过滤规则的方式,以下分别进行说明。
[0178] 方式一:从预先确定的图层过滤规则表中选取第一图层过滤规则和第二图层过滤规则
[0179] 获取所述第一电子设备的第一设备标识和所述第二电子设备的第二设备标识;在图层过滤规则表中查找与所述第一设备标识匹配的图层过滤规则,将查找到的图层过滤规则确定为所述第一显示缓存对应的所述第一图层过滤规则;在所述图层过滤规则表中查找与所述第二设备标识匹配的图层过滤规则,将查找到的图层过滤规则确定为所述第二显示缓存对应的所述第二图层过滤规则。这样,通过预先确定图层过滤规则,并进行存储,在需要进行图层过滤时,直接获取已有的图层过滤规则,方便快速。
[0180] 示例性的,参见表1给出一种预设的图层过滤规则表。
[0181] 表1图层过滤规则表1
[0182]
[0183] 基于表1,在第一图层的图层类型是视频流播放图层,第二图层的类型为会议控制按钮图层,第一电子设备的设备标识为D_01,第二电子设备的设备标识为D_02时,则根据第一电子设备的设备标识在图层过滤规则表1中查找到的适合第一显示缓存的第一图层过滤规则为“显示图层类型为视频流播放图层和会议控制按钮图层”,根据第二电子设备的设备标识在图层过滤规则表1中查找到的适合第二显示缓存的第二图层过滤规则为“显示图层类型为视频流播放图层,不显示会议控制按钮图层”。
[0184] 可理解的,由于视频类的第一控件位于视频流播放图层,按钮类的第二控件位于会议控制按钮图层,因此根据第一图层过滤规则和各图层类型生成的第一显示画面中会包括位于视频流播放图层的第一控件和位于会议控制按钮图层的第二控件。
[0185] 相应地,根据第二图层过滤规则和各图层类型生成的第二显示画面中会包括位于视频流播放图层的第一控件,但不包括位于会议控制按钮图层的第二控件。
[0186] 示例性的,参见表2给出另一种预设的图层过滤规则表。
[0187] 表2图层过滤规则表2
[0188]
[0189] 基于表2在第一图层的图层类型是白板批注图层,第二图层的类型为会议控制按钮图层,第一电子设备的设备标识为D_01,第二电子设备的设备标识为D_02时,则根据第一电子设备的设备标识在图层过滤规则表2中查找到的适合第一显示缓存的第一图层过滤规则为“显示图层类型为白板批注图层和会议控制按钮图层”,根据第二电子设备的设备标识在图层过滤规则表2中查找到的适合第二显示缓存的第二图层过滤规则为“显示图层类型为白板批注图层,不显示会议控制按钮图层”。
[0190] 可理解的,由于白板批注类的第一控件位于白板批注图层,按钮类的第二控件位于会议控制按钮图层,因此根据第一图层过滤规则和各图层类型生成的第一显示画面中会包括位于白板批注图层的第一控件和位于会议控制按钮图层的第二控件。
[0191] 相应地,根据第二图层过滤规则和各图层类型生成的第二显示画面中会包括位于白板批注图层的第一控件,但不包括位于会议控制按钮图层的第二控件。
[0192] 应当理解的是,上述说明仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0193] 方式二:提供用户入口,由用户决策第一图层过滤规则和第二图层过滤规则[0194] 为了提升用户参与度,还可以提供用户操作入口,由用户决策图层过滤规则,具体的:首先,在所述第一电子设备的屏幕上显示可供用户操作的图层过滤规则决策界面,所述图层过滤规则决策界面包括所述第一控件和所述第一控件所在的所述第一图层的图层类型,所述第二控件和所述第二控件所在的所述第二图层的图层类型;然后,响应于用户为所述第一显示缓存设置所述第一图层过滤规则的操作行为,生成所述第一图层过滤规则;响应于用户为所述第二显示缓存设置所述第二图层过滤规则的操作行为,生成所述第二图层过滤规则。
[0195] 参见图9,给出了一种供用户决策第一图层过滤规则和第二图层过滤规则的界面示意图。
[0196] 示例性的,手机100的显示界面显示的是设置第一图层过滤规则和第二图层过滤规则的操作界面。在该操作界面中,分成设置第一图层过滤规则的区域和设置第二图层过滤规则的区域。
[0197] 依旧以第一应用包括第一控件和第二控件,第一控件位于第一图层,第二控件位于第二图层这一前提为例。在根据上述方式确定第一图层的图层类型为视频流播放图层,第二图层为会议控制按钮图层时,继续参见图9。在设置第一图层过滤规则的区域中显示了视频流播放图层和会议控制按钮图层,同时在每个图层选项后对应设置了复选框;在设置第二图层过滤规则的区域中同样显示了视频流播放图层和会议控制按钮图层,同时在每个图层选项后对应设置了复选框。
[0198] 示例性的,当用户在第一图层过滤规则的设置区域中选中了视频流播放图层和会议控制按钮图层这两个图层的复选框,并点击了保存按钮后,手机响应于用户的操作行为,根据用户的选择生成第一显示缓存的第一图层过滤规则,具体为“显示图层类型为视频流播放图层和会议控制按钮图层”。
[0199] 示例性的,当用户在第二图层过滤规则的设置区域中选中了视频流播放图层这一个图层的复选框,并点击了保存按钮后,手机响应于用户的操作行为,根据用户的选择生成第二显示缓存的第二图层过滤规则,具体为“显示图层类型为视频流播放图层,不显示会议控制按钮图层”。
[0200] 应当理解的是,上述说明仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0201] 为了更好的说明发起投射的第一电子设备向接受投屏的第二设备(以下称为大屏设备)投射内容的流程,本申请实施例以发起投射的第一电子设备为手机,大屏设备为电视,第一应用为会议应用为例,通过以下三种场景,结合本申请实施例提供的投屏方法进行说明。
[0202] 场景一:
[0203] 下面结合图3和图10至图12对本申请实施例具体实现方式进行详细说明。具体的,投屏的过程可分为三部分,第一部分为图层识别过程,图层识别过程主要是对会议应用程序需要绘制的控件进行识别,确定图层类型的过程。第二部分为过滤和渲染合成过程,过滤和渲染合成过程主要是根据识别出的图层标识信息对不同类型的图层进行过滤,然后将过滤后的图层进行渲染合成。第三部分为送显过程,即将渲染合成的不同画面,分别传输给对应的屏幕(手机屏幕和电视屏幕)进行显示。
[0204] 下面结合图10所示的手机内各模模块与电视(大屏)内各模块的交互流程示意图、图11所示的手机内各模块交互的时序图,以及图12所示的手机内各模块与电视内各模块交互的时序图,对整个投屏过程进行详细说明。
[0205] 参见图11,具体包括:
[0206] 101,发送绘制控件1和控件2的绘制请求。
[0207] 参见图10,示例性的,安装在手机应用程序层的会议应用程序(后续称为:会议应用)成启动后,假设使用会议应用在加入会议后,默认状态下需要呈现在手机屏幕的画面包括控件1(假设为视频流播放控件)和控件2(假设为会议控制按钮控件),会议应用便会向位于应用程序框架层的显示管理框架中用于确定控件信息的显示处理模块发送申请绘制控件的绘制请求。
[0208] 可选地,绘制请求中包括但不限于:会议应用的应用ID(例如可以是应用程序包名)、需要绘制的控件的ID(例如可以是控件名)等。
[0209] 102,分别确定控件1的控件信息和控件2的控件信息。
[0210] 参见图10,示例性的,显示处理模块接收到会议应用发送的绘制控件1和控件2的绘制请求后,根据绘制请求中携带的信息,分别确定需要绘制的控件对应的控件信息。
[0211] 示例性的,显示处理模块根据抓取到的应用ID确定应用类型,例如根据上述发起绘制请求的是会议应用,则根据会议应用的ID确定的应用类型可以为会议类型。
[0212] 可理解的,关于应用类型的确定,可以通过预设应用ID与应用类型的对应关系,进而在抓取到应用ID时,直接根据预设的对应关系确定对应的应用类型。
[0213] 示例性的,显示处理模块根据抓取到的控件名确定控件类型,例如在抓取到的控件名为SurfaceView时,确定的控件类型为视频流播放控件,或者3D图片显示控件。
[0214] 可理解的,关于控件类型的确定,同样可以通过预设对应关系的方式确定,即预先确定不同控件名与控件类型的对应关系,进而在抓取到控件名时,直接根据预设的对应关系确定对应的控件类型。
[0215] 由此,显示处理模块根据接收到的绘制请求,便可以确定需要绘制的控件的控件信息。
[0216] 应当理解的是,上述说明仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0217] 103,发送控件1的控件信息和控件2的控件信息。
[0218] 显示处理模块在确定需要绘制的控件1的控件信息和控件2的控件信息后,将确定的各控件的绘制信息发送给图层识别模块,由图层识别模块对控件所属的图层进行识别。
[0219] 104,发送控件1和控件2的绘制请求。
[0220] 显示处理模块在向图层识别模糊发送控制信息的同时,可以向显示渲染框架中的图层过滤模块发送针对控件1和控件2的绘制请求。
[0221] 示例性的,在实际的应用场景中,显示处理模块可以根据确定的会议类型和控件类型,获取会议应用对应的配置信息,例如可以是会议应用显示的画面对应的分辨率(例如1080*720),以及控件的配置信息,例如可以是控件的大小、位置等信息,然后根据确定的信息生成需要向图层过滤模块发送的绘制请求,并将绘制请求发送给图层过滤模块。
[0222] 此外,显示处理模块也可以将确定的上述配置信息作为各个控件对应的控件信息,发送给图层识别模块进行处理。
[0223] 示例性的,在实际的应用场景中,显示处理模块向图层过滤模块发送绘制请求的操作,可以是与向图层识别模块发送确定的控件信息的操作同步进行的,也可以是在发送控件信息之前进行的,还可以是在发送控件信息之后进行的。
[0224] 示例性的,在实际的应用场景中,如果显示处理模块是在向图层识别模块发送控件信息之后,再向图层过滤模块发送绘制请求,那么绘制请求可以是在图层识别模块识别出需要绘制的控件所属图层后才向图层过滤模块发送的。
[0225] 应当理解的是,上述说明仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0226] 105,根据控件1的控件信息确定控件1的图层类型,根据控件2的控件信息确定控件2的图层类型。
[0227] 需要说明的,在实际的应用场景中,图层识别模块可以划分为图层标识模块和图层标识记录库两部分。
[0228] 其中,图层标识模块具体是依据预设的图层标识算法对显示处理模块发送的控件信息进行识别分析,进而确定的控件所属图层类型,并在控件所属图层进行标识的;图层标识记录库是用于记录已知控件与图层关系的。
[0229] 示例性的,在实际的应用场景中,图层识别模块在接收到来自显示处理模块下发的各控件的控件信息后,可以先根据控件信息在图层标识记录库中进行查找,如果查找到对应的图层,以及标识信息,则直接将查找到的图层确定为控件对应的图层类型,如果没有查找到,则由图层标识模块根据预设的图层标识算法对显示处理模块发送的控件信息进行识别分析,进而确定的控件所属图层类型。
[0230] 例如,图层识别模块在接收到显示处理模块发送的控件1的控件信息和控件2的控件信息后,首先根据控件1的控件信息和控件2的控件信息在图层标识记录库中进行查找。假设,在图层标识记录库中查找到了与控件1的控件信息匹配的内容,如控件1的控件信息对应的图层类型为视频流播放图层,则将控件1的图层类型确定为视频流播放图层。假设,在图层标识记录库中没有查找到与控件2的控件信息匹配的内容,则由图层标识模块根据预设的图层标识算法对控件2的控件信息进行识别分析,进而确定控件2所属的图层类型,例如根据图层标识算法确定控件2的图层类型为会议控制按钮图层。
[0231] 关于基于预设的图层标识算法对控制信息进行识别分析的过程,本申请实施例给出几种具体的实现方式,具体如下:
[0232] 示例性的,在一种可能的实现方式中,图层标识模块可以根据控件的尺寸、位置、拼接情况,并结合控件信息中的应用类型和控件类型,确定控件所属的图层类型。
[0233] 例如,对于会议类应用,在进行视频会议时,通常情况下当前主讲人的视频流播放控件会位于整个画面的中间区域,其他与会人员的视频流播放控件会位于手机屏幕的顶部区域,可供用户操作的会议控制按钮控件则位于手机屏幕的底部区域,具体样式如图3所示。
[0234] 还比如,用于显示与会人员(包括主讲人)的视频流播放控件的尺寸是相同的,多个与会人员的视频流播放控件拼接在一起构成一个完成的视频流播放图层。而供用户操作的会议控制按钮案件则显示在一个会议控制按钮图层中,位于手机屏幕的底部区域,或者顶部区域,或者左右两侧。
[0235] 应当理解的是,上述说明仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0236] 基于这种预知的信息,图层识别模块根据控件的尺寸、位置、拼接情况,并结合控件信息中的应用类型和控件类型,便可以确定控件所属的图层类型。
[0237] 例如,图3中用于显示与会人员的画面的视频流播放控件一起对应一个视频播放图层20‑1,供用户操作的静音设置选项、视频设置选项、共享设置选项、与会者设置选项、更多设置选项一起对应一个会议控制按钮图层20‑2。
[0238] 可选地,在实际的应用场景中,也可以设置一个视频流播放控件对应一个视频流播放图层,一个会议控制按钮控件对应一个会议控制按钮图层,本申请对此不做限制。
[0239] 示例性的,在另一种可能实现的方式中,对于一些非视频流播放控件,即不是用来显示与会人员的视频流的,是否需要将其归类到视频流播放图层,从而实现在投屏模式下,能够在大屏仅显示视频流播放图层中的内容的情况下,能够投射到大屏进行显示,图层标识模块可以通过监测此类非视频流播放控件能否接受触摸,以及触摸时长(例如10帧的时长),是否存在光标变化、提示等信息来确定此类控件是否需要归类到视频流播放图层。
[0240] 例如,对于共享设置选项下的白板批注模式,该模式下通常不会显示与会者的视频流播放控件,但是白板批注控件需要进行显示,如果不将该控件归类到视频流播放图层,那么大屏就不能与手机屏幕同步显示白板批注画面。因此,对于此类控件,通过监测白板画笔/光标的变化,以及位置的移动,提示信息等,在确定是白板批注控件时,同样将其归类到视频流播放图层,即在大屏进行显示。
[0241] 示例性的,在另一种可能实现的方式中,对于会议应用向显示处理模块发送的绘制请求没有携带具体的包名特征的,显示处理模块无法确定具体的应用类型和控件类型的场景,图层标识模块可以通过判断绘制请求的来源信息来确定图层类型,进而对控件进行图层标识。
[0242] 可选地,在根据来源信息确定图层类型时,具体可以通过判断虚拟IP地址(Virtual IP Address,VIP)、进程识别号(Process Identification,PID)等关联信息,进而根据这些关联信息确定控件对应的图层类型。
[0243] 可理解的,在实际的应用场景中,可以建立各种已知控件的来源信息与控件和对应的图层类型之间的对应关系,进而在绘制请求没有携带具体的包名特征,无法确定控件的控件信息时,图层标识模块可以根据发起的绘制请求对应的来源信息和预先确定的对应关系,确定控件所属的图层类型。
[0244] 示例性的,在另一种可能的实现方式中,对于采用上述任一种实现方式均无法确定控件所属图层类型的场景,图层标识模块可以通过截取来自HAL层上传的数据流,例如可以截取前5帧,然后通过对着5帧数据进行解析,利用预先训练好的识别模型分析识别当前画面中是否包括了控件所属图层类型为视频流播放图层的控件,或者所属图层类型会议控制按钮图层的控件,进而确定各控件所属的图层类型。
[0245] 应当理解的是,上述说明仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0246] 106,发送控件1的图层类型和控件2的图层类型。
[0247] 图层识别模块在完成对各控件所属图层类型的确定后,将控件和对应的图层类型发送给图层过滤模块,以便图层过滤模块根据识别出的图层中添加的标识信息对图层进行过滤。
[0248] 需要说明的,在实际的应用场景中,为了保证图层标识记录库中的记录的内容的有效性,在每次通过图层标识模块识别出控件的图层类型后,都可以将控件和对应的图层类型更新到图层标识记录库中。
[0249] 107,根据预设过滤规则过滤掉控件2。
[0250] 示例性的,参见图10,在实际的应用场景中,图层过滤模块中可以预先置入多种过滤规则。
[0251] 具体的,过滤规则可以根据大屏设备的类型、型号等来划分,比如对于电视类的大屏设备,过滤规则可以为仅在大屏投射视频流播放图层;对于投影仪类的大屏设备,过滤规则可以为所有图层均显示在大屏设备。
[0252] 可选地,在实际的应用场景中,过滤规则还可以是大屏设备显示视频流播放图层中所有的内容,显示会议控制按钮图层中部分控件,例如仅显示静音设置选项。
[0253] 此外,对于手机屏幕显示的画面对应的过滤规则,可以是所有图层都显示,即不过滤任何图层。
[0254] 此外,在实际的应用场景中,如果采用其他大屏设备作为主控设备,即供用户进行操作的设备,则手机屏幕可以根据业务需求直接不显示任何内容,而在设定的主控设备显示所有图层。
[0255] 示例性的,参见图10和图11,控件1为视频流播放控件,控件2为会议控制按钮控件。当确定了图层类型的控件1和控件2到达图层过滤模块后,假设对应手机屏幕的过滤规则(图10中的规则1)为所有图层的内容都送显,根据规则1过滤出来后,实质并没有过滤掉控件1和控件2,而是将控件1的资源和控件2的资源全部发送至合成渲染模块进行画面绘制。
[0256] 相应地,假设对应电视屏幕(大屏)的过滤规则(图10中的规则2)为仅显示视频流播放图层中的内容,则根据规则2,图层过滤模块会将控件2过滤掉,仅将控件1的资源发送至合成渲染模块进行画面绘制。
[0257] 应当理解的是,上述说明仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0258] 在实际的应用场景中,过滤规则也可以由用户决策。
[0259] 示例性的,通过设置图层识别模块识别出当前应用需要绘制的画面包括的图层类型后,分别将识别出的图层类型发送给应用程序层的应,如图11中的会议应用,以及显示渲染框架中的图层过滤模块。
[0260] 相应地,识别出的图层类型到达应用程序层后,手机做出响应,可以再当前界面弹出显示每一控件对应的图层的界面,供用户选则哪些控件所在的图层投放到电视屏幕,哪些显示在手机屏幕,即得到对应电视屏幕的过滤规则和手机屏幕的过滤规则。接着,将由用户决策的过滤规则下发给显示渲染框架中的图层过滤模块,供图层过滤模块根据过滤规则进行图层过滤。
[0261] 通过提供用户决策过滤规则的入口,让用户参与到投屏内容的选择中,使得投屏的应用场景能够更好的满足不同的用户需求,进而提升了用户体验。
[0262] 108,发送控件1的资源。
[0263] 图层过滤模块根据预置的过滤规则对控件进行过滤后,将满足过滤规则的控件资源发送至合成渲染模块进行画面的绘制。
[0264] 需要说明的,在根据预置的过滤规则对控件进行过滤后,需要发送的控件发资源,可以根据显示处理模块下发的绘制请求中写的信息确定,具体确定方式本申请不做限制,对此也不做描述。
[0265] 109,根据控件1的资源绘制控件1,得到画面A。
[0266] 具体的,合成渲染模块先根据接收到的控件的资源,例如可以是绘制逻辑绘制需要显示的各个控件,然后将各控件所在的图层进行合成,得到一个完整的画面。
[0267] 示例性的,对于本申请实施例中根据控件1的资源绘制控件1,进而得到画面A的过程,实质就是绘制图3所示的视频播放流图层20‑1中各个视频流播放控件,并将这些控件所在图层合成为一个画面的过程,即最终得到的画面A就是图3中的20‑1。
[0268] 相应地,对于根据规则1过滤后得到的内容是控件1和控件2时,则合成渲染模块会根据控件1的资源绘制控件1,根据控件2的资源绘制控件2,然后将控件1所在的图层和控件2所在的图层进行合成,最后得到一个完整的画面B。
[0269] 应当理解的是,上述说明仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0270] 由此,实现了图层的分离、过滤和合成渲染。
[0271] 在得到需要在电视屏幕显示的画面A后,会将画面A缓存到显示缓存A中,在后续流程中,直接从显示缓存A获取画面A即可。
[0272] 相应地,在得到需要在手机屏幕显示的画面B后,会将画面B缓冲到显示缓存B中,在后续流程中,直接从显示缓存B获取画面B即可。
[0273] 此外,需要说明的是,在实际的应用场景中,显示缓存A和显示缓存B可以是同一个缓存区域,对于这种场景,在将不同画面缓存到缓存区域时,携带好具体的标识(例如可以是具体对于哪一个设备),这样无需在手机内部分配多个缓存区域,从而避免冗余问题。
[0274] 此外,在得到画面A和画面B后,对于如何从手机的显示缓存中将缓存的画面分别送显到不同的屏幕进行显示的过程,以下结合图10和图12进行详细说明。
[0275] 参见图12,具体包括:
[0276] 201,根据控件1的资源绘制控件1,得到画面A。
[0277] 合成渲染模块,根据控件的资源绘制控件,进而得到满足过滤要求的画面的过程,详见图11中步骤109的描述,此处不再赘述。
[0278] 202,发送画面A。
[0279] 示例性的,参见图10,合成渲染模块在合成绘制得到需要送显的画面后,会将得到的画面暂时缓存到对应的显示缓存中,然后由显示缓冲将缓冲的画面发送给对应的模块。
[0280] 示例性的,参见图10,需要投射到电视屏幕(大屏)显示的画面A会缓存到显示缓冲A中,在需要投射给电视屏幕时,投屏录制模块会从显示缓存A中取出画面A,对画面A进行录制,即显示缓存A中缓存的画面A是发送给投屏录制模块的。
[0281] 203,录制画面A,得到投屏内容。
[0282] 投屏录制模块获取到画面A后,对画面A进行录制,并在录制完成后对录制的内容进行视频编码,进而得到投屏内容。
[0283] 可理解的,在实际的应用场景中,每一帧视频流都会对应一个画面,因而得到的画面A可以是不同时刻的,因而投屏录制模块在进行录制时,可以按照预设的录制要求对多帧的画面进行录制,比如每秒30帧。因此,得到的投屏内容实质为动态的视频流。
[0284] 需要说明的,投屏录制模块为具备投屏功能的电子设备系统自带的,关于具体的录制过程本申请不做描述,对于录制后进行的视频编码本申请也不做限制。
[0285] 204,发送投屏内容。
[0286] 投屏录制模块在完成对画面A的录制和视频编码操作后,会将得到的投屏内容通过预先建立的通信连接传输给大屏设备(本实施例为电视机)内的视频解码模块。
[0287] 205,解码投屏内容,得到画面A。
[0288] 电视内的视频解码模块在接收到手机传输的投屏内容后,会按照预定的方式进行解码,进而解析出画面A。
[0289] 可理解的,经投屏录制模块录制后得到的投屏内容实质为视频流,因此此外的解码操作为对视频流进行解码,进而得到需要显示的视频内容。
[0290] 可理解的,对于不同时刻的视频内容,其实是由多帧画面构成的,因而在电视屏幕显示的是连续变化的每一帧对于的画面。
[0291] 206,发送画面A。
[0292] 视频解码模块在解析出画面A后,会将画面A发送给电视屏幕,具体为发送给电视的投屏显示模块。
[0293] 207,显示画面A。
[0294] 投屏显示模块将接收到的画面A显示在显示屏2,即电视屏幕中。
[0295] 可理解的,由于画面A中仅包括图层类型为视频流播放图层的控件,因而在电视屏幕中显示的内容具体是图3中20‑1的镜像,即20‑1’。
[0296] 208,根据控件1的资源绘制控件1,根据控件2的资源绘制控件2,得到画面B。
[0297] 合成渲染模块,根据控件的资源绘制控件,进而得到满足过滤要求的画面的过程,详见图11中步骤109的描述,此处不再赘述。
[0298] 209,发送画面B。
[0299] 示例性的,参见图10,合成渲染模块在合成绘制得到需要送显的画面后,会将得到的画面暂时缓存到对应的显示缓存中,然后由显示缓冲将缓冲的画面发送给对应的模块。
[0300] 示例性的,参见图10,需要在手机屏幕显示的画面B会缓存到显示缓冲B中,在需要显示到手机屏幕时,手机显示驱动会从显示缓存B中取出画面B,即显示缓存B中缓存的画面B是发送给手机显示驱动的。
[0301] 210,发送画面B。
[0302] 手机显示驱动接收到画面B后,会将画面B上传给位于应用程序层的会议应用,在会议应用对应的会议界面进行显示。
[0303] 211,显示画面B。
[0304] 可理解的,由于画面B包括了所有的图层,因而在手机屏幕,不仅会显示图3中的20‑1,还会显示20‑2。
[0305] 通过上述描述不难发现,通过在投射内容的电子设备,如手机侧的应用程序框架层中增加图层识别模块和图层过滤模块,从而可以由图层识别模块识别出当前通过会议应用加入的会议的图层中,哪一层是视频流播放图层,哪一层是会议控制按钮图层。而后,在图层过滤模块进行图层过滤处理,从而根据预置的过滤规则,过滤出哪些图层需要在手机屏幕显示,哪些图层需要在大屏显示。例如,对于手机屏幕,设置所有图层都显示,这样用户不仅可以看到整个会议过程中涉及的视频流内容,还可以看到可供用户操作的会议控制按钮,以便用户通过会议控制按钮对会议进行操作。对于大屏,设置仅显示视频流播放图层,这样使用大屏观看会议的其他用户,仅能看到会议过程中涉及的视频流内容,当用户操作手机屏幕显示的会议控制按钮时,整个操作过程使用大屏观看会议的用户不会看到,因而不会影响大屏的观看。
[0306] 此外,由于大屏仅显示会议过程中涉及的视频流内容,对于手机屏幕显示的其他涉及隐私信息的内容,同样不会投射在大屏,从而保证了用户隐私。
[0307] 场景二:
[0308] 场景一所述的实施例是手机屏幕显示所有与会人员的画面和会议控制按钮,电视屏幕仅显示与会人员的画面。下面结合图13对手机屏幕显示所有与会人员的画面,以及与会人员添加到画面中的标注内容和会议控制按钮,电视屏幕显示与会人员的画面以及与会人员添加到画面中的标注内容的场景进行详细说明。
[0309] 参见图13,示例性的,手机100的显示界面显示的是通过会议应用加入会议后的画面20,在画面20中包括视频流播放图层20‑1、会议控制按钮图层20‑2其他与会人员添加的标注内容20‑3,以及使用手机100的用户为自己添加的标注内容20‑4。
[0310] 可理解的,对于图层20‑1和图层20‑2的识别和过滤方式,具体过程可以参照场景一中的描述,此处不再赘述。
[0311] 对于图层20‑3和图层20‑4,在实际的应用场景中,并非是通过与会人员使用的手机的摄像头采集的,而是与会人员自己在呈现的画面上添加的,比如目前一些直播互动中,直播人员可以自己添加基于增强现实(Augmented Reality,AR)技术绘制的标注内容,参见图13在对端用户处添加的AR标注内容为20‑3,在本机用户处添加的AR标注内容为20‑4。对于此类内容对于的控件,在确定其是否应当归类到视频流播放图层时,具体可以根据这些控件与视频播放流控件之间的位置关系来确定。因而,图层识别模块在根据控件的控件信息确定图层类型时,会根据已知图层类型的控件与此类控件之间的位置关系,确定此类控件是否需要归类到视频流播放图层。
[0312] 相应地,由于本机用户添加的AR标注内容是想要给其他与会者观看的,因此标识的AR标识内容实质是需要通过服务器传输给其他与会者的,即在其他与会者的手机屏幕和大屏均需显示,而在本机匹配的大屏上,实质上不需要进行投放,故而在一种实现场景下,本机用户添加的AR标注内容,在大屏不显示,而在其他用户的手机匹配的大屏上显示。
[0313] 参见图13,20‑4是本机用户添加,因此该图层的内容仅在手机屏幕显示,在匹配的大屏200上不显示,而20‑3是其他与会者在自己的手机上添加的,故而手机100的屏幕20上需要显示20‑4,同时在将该画面投射到大屏200时,需要将20‑3也进行显示,故而大屏200上会显示20‑1的镜像内容20‑1’和20‑3的镜像内容20‑3’。
[0314] 此外,在另一种实现场景中,为了让观看大屏200的用户能够看到使用手机100加入会议的用户添加的AR标注内容20‑3,也可以将其归类到视频流播放图层中,从而使得投射到大屏200上的画面不仅包括对端用户添加的AR标注内容20‑3的镜像内容,还会显示本机用户添加的AR标注内容20‑4的镜像内容。
[0315] 应当理解的是,上述说明仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0316] 由此,通过根据业务需要,将不属于视频流播放图层的控件归类到视频流播放图层,从而可以将非视频流播放控件显示的内容也投射到大屏进行显示,进一步丰富了投屏场景。
[0317] 场景三:
[0318] 场景一所述的实施例是手机屏幕显示所有与会人员的画面和会议控制按钮,电视屏幕仅显示与会人员的画面。下面结合图14a、图14b和图15对手机屏幕从场景1的画面切换到白板批注模式时,手机屏幕和电视屏幕显示画面的变化进行详细说明。
[0319] 参见图14a,示例性的,手机100的显示界面显示的是通过会议应用加入会议后的画面20,在画面20中包括了视频流播放图层20‑1和会议控制按钮图层20‑2。视频流播放图层20‑1包括一个或多个视频流播放控件,具体描述可参照场景一,此处不再赘述。通过手机100投射到电视200上的画面20’仅包括视频流播放图层20‑1的镜像20‑1’。
[0320] 示例性的,视频流播放图层20‑1’包括一个或多个视频流播放控件,并且显示的视频流播放控件分别与手机100的画面20中显示的视频流播放控件一一对应,且视频流播放控件中显示的内容均相同。
[0321] 此外,参见图14a,示例性的,手机100的显示界面显示的会议控制按钮图层20‑2包括一个或多个会议控制按钮,例如图14a中示出的静音设置选项、视频设置选项、共享设置选项、与会者设置选项和更多设置选项。
[0322] 示例性的,当用户点击了会议控制按钮图层20‑2中的共享设置选项后,手机100响应于用户的操作行为,在显示界面上显示选择共享内容的提示框40,如图14a所示。其中,提示框40包括一个或多个控件,例如可以是图14a示出的桌面设置选项40‑1、白板设置选项40‑2、取消设置选项40‑3和开始共享40‑4。
[0323] 需要说明的是,图14a及图14b所涉及的手机100的显示界面显示的控件的名称和数量,以及提示框40中显示的的控件的名称和数量仅为示意性举例,本申请不做限定。
[0324] 继续参照图14a,示例性的,当用户点击了提示框40中的白板设置选项40‑2后,手机100响应于用户的操作行为,将白板设置选项40‑2的状态标注为选中,接着如果用户点击了开始共享设置选项40‑4,手机100响应于用户的操作行为,便会从当前界面切换为白板批注模式的界面,如图14b所示。
[0325] 参见图14b,示例性的,在切换到白板批注模式后,手机100的显示界面显示的画面20中包括但不限于图14a中就显示的会议控制按钮图层20‑2、切换到白板批注模式后由白板批注控件绘制得到的白板批注图层20‑5,以及用于停止共享的会议控制按钮图层20‑6。
其中,会议控制按钮图层20‑6包括一个或多个控件,例如图14b中用于提示用户当前正在共享白板的提示控件,以及供用户操作停止共享的控件。
[0326] 继续参照图14b,示例性的,由于会议控制按钮图层20‑6中的控件依旧是供用户进行操作的,不涉及白板内容,因此在进行投屏时,图层识别模块会将此类控件识别出,并由图层过滤模块进行过滤,以保证投射到电视屏幕上的画面20’仅包括白板批注图层20‑5’中用户绘制的内容。
[0327] 此外,应当理解的,若在用户点击了提示框40中的白板设置选项40‑2后,手机100响应于用户的操作行为,将白板设置选项40‑2的状态标注为选中后,接着用户点击了点击了取消设置选项40‑3,手机100响应于用户的操作行为,提示框40便会从显示界面消失,恢复到图14a左下角示出的手机100显示界面显示的内容。
[0328] 需要说明的是,在实际的应用场景中,切换到白板批注模式下,会直接将在白板中绘制内容的画笔作为一个单独的图层,为了避免画笔对观看大屏画面的用户的干扰,大屏显示的画面通常不会显示能够在白板绘制内容的画笔,而是直接显示使用白板绘制出的内容。但在手机侧,为了便于绘制内容的用户知道绘制位置,会显示画笔。
[0329] 此外,在另一种实现场景中,例如对共享文档中的内容进行展示时,在手机屏幕显示的光标可以投射到大屏,以便观看大屏的用户获知当前选中内容。
[0330] 下面结合图15所示的手机内各模模块与电视(大屏)内各模块的交互流程示意图,对场景3涉及的整个投屏过程进行详细说明。
[0331] 参见图15,示例性的,安装在手机应用程序层的会议应用程序(后续称为:会议应用)成启动后,假设使用会议应用在加入会议后,默认状态下需要呈现在手机屏幕的画面包括控件1(假设为视频流播放控件)和控件2(假设为会议控制按钮控件),会议应用便会向位于应用程序框架层的显示管理框架中用于确定控件信息的显示处理模块发送申请绘制控件的绘制请求。此时,如果用户点击了会议控制按钮图层中显示的共享设置选项,并选中了提供的白板模式,会议应用同样会向位于位于应用程序框架层的显示管理框架中用于确定控件信息的显示处理模块发送申请绘制白板批注控件的绘制请求。关于在手机界面执行白板模式切换的操作的过程,详见图14a和图14b示出的界面图。
[0332] 继续参照图15,示例性的,显示处理模块接收到会议应用发送的绘制控件1和控件2的绘制请求后,根据绘制请求中携带的信息,分别确定需要绘制的控件对应的控件信息,以及由图层识别模块识别控件1和控件2的图层类型的操作,具体描述可参照场景一,此处不再赘述。
[0333] 此外,应当理解的,白板批注控件设置上也是一种控件,只是具体的控件属性和控件信息与视频流播放控件、会议控制按钮控件不同,但确定白板批注控件的控件信息的过程与视频流播放控件和会议控制按钮控件的过程类似。显示处理模块同样可以抓取到的应用ID确定应用类型,例如根据上述发起绘制请求的是会议应用,则根据会议应用的ID确定的应用类型可以为会议类型,以及根据抓取到的控件名确定控件类型,例如在抓取到的控件名为BlankWindow时,确定的控件类型为白板批注控件。
[0334] 相应地,显示处理模块在确定白板批注控件对应的控件信息后,同样会将确定的控件信息发送给图层识别模块,由图层识别模块进行图层类型的识别,进而由图层识别模块将识别出的图层类型发送给图层过滤模块。接着,图层过滤模块根据预置的过滤规则进行过滤,并将过滤出的需要显示在不同设备的控件的资源分别发送给合成渲染模块,由合成渲染模块合成需要输送到不同设备进行显示的画面。
[0335] 继续参照图15,示例性的,假设过滤模块中预置的规则1是对应手机屏幕的过滤规则,规则1中规定了所有图层的内容都在手机屏幕显示,则根据规则1过滤出的内容为切换到白板模式显示的白板批注控件,以及供用户操作的会议控制按钮控件。
[0336] 相应地,假设过滤模块中预置的规则是对应电视屏幕的过滤规则,规则2中规定了在白板模式下,电视屏幕仅显示白板批注控件中的内容,则根据过滤规则2,图层过滤模块会将视频流播放控件、会议控制按钮控件过滤掉,仅将白板批注控件的资源发送至合成渲染模块进行画面绘制。
[0337] 继续参照图15,示例性的,合成渲染模块在接收到图层过滤模块根据不同过滤规则过滤出的控件的资源后,根据对应的资源绘制控件,进而得到需要显示到不同设备的画面。
[0338] 同样,合成渲染模块绘制出的画面可以先缓存到对应的显示缓存中,例如根据白板批注控件的资源和会议控制按钮控件的资源绘制的画面A需要缓存到显示缓存A中,在需要进行画面显示时,从显示缓存A取出画面A发送给手机显示驱动,由手机显示驱动发送给手机屏幕进行显示,从而得到图14b手机100的显示界面显示的画面20。
[0339] 相应地,对于根据白板批注控件的资源绘制的画面B需要缓存到显示缓冲B中,在需要进行画面投射时,从显示缓存B取出画面B发送给投屏录制模块进行录制,进而得到投屏内容,并由投屏录制模块将得到的投屏内容发送给预先建立通信连接的电视机,由电视机中的视频解码模块进行解码处理,进而解析出画面B,让后将画面B传输给投屏显示模块,最终在电视屏幕显示画面B。
[0340] 由此,通过对会议画面的图层进行分离,在投射内容的电子设备,如手机侧显示全部的图层合成的画面,在显示投射内容的大屏设备,如电视机上仅显示视频流播放图层,从而在用户通过手机侧显示的会议控制按钮图层显示的会议空按钮控件的操作行为,实现将当前会议画面切换为白板模式时,整个切换过程不会在电视屏幕显示,电视屏幕依旧显示视频流播放图层中的内容,在手机侧切换到白板模式后,电视屏幕将当前显示的画面切换为白板批注控件,这样既不影响使用电视屏幕观看会议的用户的视觉体验,又能够及时显示切换后的白板画面,实现了不同界面的无恒切换。
[0341] 此外,需要说明的是,在实际的应用场景中,由于投射内容的电子设备与显示投射的内容的大屏设备的分辨率、屏幕尺寸、比例会有所差异,因此在一个实现方式中,可以根据分辨率预先确定录制的投屏内容的帧率,在另一个实现方式中,可以根据屏幕尺寸、比例等信息对投射在大屏设备的画面进行去黑边处理。
[0342] 关于投屏时,去黑边的处理方式,具体如下:
[0343] 在对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容的过程中,可以先获取所述第一电子设备的第一屏幕纵横比和所述第二电子设备的第二屏幕纵横比;然后,在所述第一屏幕纵横比和所述第二屏幕纵横比不同时,对所述第二显示缓存中的所述第二显示画面进行去黑边处理,并录制去黑边后的所述第二显示画面得到所述投屏内容;在所述第一屏幕纵横比和所述第二屏幕纵横比相同时,对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容。这样,引入去黑边处理,从而可以保证显示在第二电子设备的第二显示画面没有黑边,或者尽可能减小黑边,从而提升了观看投屏画面的用户观看体验。
[0344] 可理解的,第二显示画面是在第一电子设备内的虚拟屏幕绘制的。
[0345] 示例性的,在第一屏幕纵横比和第二屏幕纵横比不相同时,为了去除第二显示画面的黑边,可以先设置虚拟屏幕的可见区域。
[0346] 为了与虚拟屏幕区分,将手机的屏幕称为物理屏幕。手机的物理屏幕一般是矩形或者近似矩形,虚拟屏幕与物理屏幕对应,一般是矩形,本申请实施例中虚拟屏幕的可见区域是物理屏幕显示区域的部分区域或者全部区域。
[0347] 参见图16a,手机的物理屏幕在显示界面时,包括显示内容层(DisplayRect)和观察窗口层(Viewport),同样的,虚拟屏幕也可以包括显示内容层和观察窗口层,不管是物理屏幕还是虚拟屏幕,屏幕的人眼可见区域与观察窗口层的区域设置信息相关,例如图16a中物理屏幕的观察窗口层为2340*1080,那么人眼可见区域为2340*1080,虚拟屏幕的观察窗口层为1920*1080,那么人眼可见区域也为1920*1080。需要说明的是,在投屏时虚拟屏幕显示的界面是不向用户显示的,其人眼可见区域是指录屏时可以被录制的区域。
[0348] 不管是物理屏幕还是虚拟屏幕,其区域的设置信息与物理屏幕的分辨率相关。举例来说,参见图16b所示,可以以物理屏幕的左上角顶点为原点O,经过原点O水平向右为x轴,经过原点O竖直向下为y轴建立坐标系,则物理屏幕中的每个像素点可以通过坐标(x,y)标识。基于该坐标系,参见图16a,以物理屏幕的分辨率是2340*1080为例,物理屏幕显示内容层的显示区域可以设置为(0,0,234,1080),观察窗口层的显示区域为(0,0,2340,1080),虚拟屏幕的显示内容层的显示区域可以设置为(0,0,2340,1080),观察窗口层的显示区域可以设置为(210,0,2130,1080)。本申请实施例中,虚拟屏幕的可见区域可以是虚拟屏幕的观察窗口层的显示区域。通过设置观察窗口层的显示区域,可以改变虚拟屏幕的人眼可见区域,也即改变发送至第二电子设备的视频帧的长宽比和内容。例如,可见区域设置为(210,0,2130,1080),则可见区域的长宽比例变为16:9,也即通过录制该比例的虚拟屏画面得到的第二显示画面的长宽比例为16:9,实际视频帧中的内容是图16b中矩形ABCD中的内容。
[0349] 在一种可能的实现方式中,手机设置虚拟屏幕的可见区域可以包括:
[0350] 手机获取虚拟屏中绘制的第二显示画面的尺寸以及大屏设备中显示控件的尺寸;
[0351] 如果判断显示控件的尺寸小于第二显示画面的尺寸,根据显示控件的显示区域设置虚拟屏幕的可见区域;
[0352] 如果判断显示控件的尺寸不小于第二显示画面的尺寸,将虚拟屏幕的可见区域设置为与大屏设备的屏幕的显示区域相同。
[0353] 在另一种可能的实现方式中,手机中虚拟屏幕的可见区域可以包括:
[0354] 手机对初次根据第二图层过滤规则和各图层的图层类型,绘制的第二显示画面进行截屏,对截屏得到的图片进行黑边检测;
[0355] 如果检测到黑边,根据非黑边区域在第二显示画面中的位置设置虚拟屏幕的可见区域;
[0356] 如果未检测到黑边,将虚拟屏幕的可见区域设置为与大屏设备的屏幕的显示区域相同。
[0357] 在检测图片是否存在黑边时,可以通过检测图片的指定区域中像素的颜色是否是黑色实现,例如,如果手机的屏幕分辨率是2340*1080,也即屏幕纵横比为19.5:9,而视频或者PPT等全屏播放时的长宽比例一般为16:9,那么,可以检测图片的区域(0,0,210,1080)以及区域(2130,0,2340,1080)中像素的RGB值是否均为(0,0,0),如果是,则上述区域为黑边区域,否则,不是黑边区域。
[0358] 在又一种可能的实现方式中,手机设置虚拟屏幕的可见区域可以包括:
[0359] 手机获取第二显示画面的尺寸以及大屏设备的屏幕显示控件的尺寸;
[0360] 如果判断显示控件的尺寸小于第二显示画面的尺寸,根据显示控件的显示区域设置虚拟屏幕的可见区域;
[0361] 如果判断显示控件的尺寸不小于第二显示画面的尺寸,对虚拟屏画面的进行截屏,对截屏得到的图片进行黑边检测;
[0362] 如果检测到黑边,根据非黑边区域设置虚拟屏幕的可见区域;
[0363] 如果未检测到黑边,将虚拟屏幕的可见区域设置为与大屏设备的屏幕的显示区域相同。
[0364] 为了保证黑边检测结果的准确性,手机可以对虚拟屏画面的多次截屏,根据多次截屏得到的多个图片的黑边检测结果设置虚拟屏幕的可见区域。
[0365] 通过上述几种方式,便可以完成去黑边处理,最终通过录制完成去黑边处理后的虚拟屏画面,便可以得到需要显示在大屏设备的第二显示画面。
[0366] 上述说明仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0367] 关于投屏时,端到端帧率的协商方法,具体如下:
[0368] 在对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容的过程中,可以先获取所述第二电子设备的显示能力;根据所述显示能力确定视频流刷新帧率;根据所述视频流刷新帧率,对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容。这样,在录制投屏内容时,第一电子设备先与第二电子设备协商视频流刷新帧率,从而既保证了传输的视频流能在第二电子设备正常显示,又可以避免对带宽的过渡占用。
[0369] 也就是说,先根据大屏设备的显示能力确定本次投屏过程中,投射内容的电子设备到大屏设备需要的视频流刷新帧率。
[0370] 可理解的,在实际的应用场景中,投射内容的电子设备与大屏设备的硬件能力会存在不对等的情况,如果按照投射内容的电子设备的高帧率投射,在高帧率的大屏设备播放时就需要做丢弃处理,这样按照高帧率传输的视频流实际是存在带宽浪费的。因此,在进行投屏时,根据大屏设备的显示能力来确定视频流的刷新帧率,这样既保证了传输的视频流能在大屏设备正常显示,又可以避免对带宽的过渡占用。
[0371] 然后,在投射内容的电子设备侧根据协商的刷新帧率,直接录制对应刷新帧率的投屏内容,从而保证传输到大屏设备侧的视频流就的刷新帧率就是大屏设备支持的,故而大屏设备无需对视频做丢弃处理。
[0372] 此外,在另一种实现方式中,对视频流的将帧处理,可以是在渲染合成模块中进行的,即对于需要输送到大屏设备显示的画面,渲染合成模块在合成时,直接按照大屏设备的视频流刷新帧率进行将帧处理合成满足要求的视频流,从而实现需要传输到大屏设备显示的视频流已经按照大屏设备的显示能力进行将帧,这样既可以减少网络传输过程中对带宽的占用,又可以降低大屏设备渲染接收到的视频流时消耗的功耗。
[0373] 此外,可理解的,在具体实现时,投射内容的电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0374] 本实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0375] 示例性的,图17示出了本申请实施例的一种装置300的示意性框图。装置300可包括:处理器301和收发器/收发管脚302,可选地,还包括存储器303。
[0376] 装置300的各个组件通过总线304耦合在一起,其中,总线304除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都称为总线304。
[0377] 可选地,存储器303可以用于前述方法实施例中的指令。该处理器301可用于执行存储器303中的指令,并控制接收管脚接收信号,以及控制发送管脚发送信号。
[0378] 此外,需要说明的是,在实际的应用场景中,装置300可以是上述方法实施例中的用于投射画面到大屏进行显示的电子设备,例如手机。
[0379] 具体的,在装置300为发起投屏的第一电子设备,且所述第一电子设备安装有第一应用,所述第一应用包括第一控件和第二控件,所述第一控件位于第一图层,所述第二控件位于第二图层时,电子设备中的一个或多个计算机程序存储在所述存储器上,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
[0380] 获取所述第一控件的控件信息和所述第二控件的控件信息;
[0381] 根据所述第一控件的控件信息确定所述第一图层的图层类型;
[0382] 根据所述第二控件的控件信息确定所述第二图层的图层类型,所述第一图层的图层类型与所述第二图层的图层类型不同;
[0383] 根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并在所述第一电子设备的屏幕显示所述第一画面,将所述第二显示画面投射到第二电子设备的屏幕进行显示,所述第一显示画面包括所述第一控件和所述第二控件,所述第二显示画面包括所述第一控件,不包括所述第二控件。
[0384] 示例性的,在一个例子中,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
[0385] 从所述第一控件的控件信息中提取所述第一控件的控件名和所述第一控件的尺寸信息;
[0386] 对所述控件名进行解析,在从所述控件名中解析出所述第一控件的控件类型、所述第一应用的包名和所述第一控件所在的界面信息时,根据所述控件类型、所述包名、所述界面信息和所述尺寸信息,确定所述第一图层的图层类型;
[0387] 在从所述控件名中解析出所述第一控件的控件类型和所述第一控件所在的界面信息,未解析出所述第一应用的包名时,获取绘制所述第一控件的进程的进程标识号PID,根据所述PID确定所述第一控件的来源,根据所述控件类型、所述来源、所述界面信息和所述尺寸信息,确定所述第一图层的图层类型,所述来源包括所述第一应用的包名。
[0388] 示例性的,在一个例子中,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
[0389] 将所述控件名和所述尺寸信息作为检索关键词;
[0390] 根据所述关键词,在图层标识记录库中查找与所述关键词匹配的控件;
[0391] 在查找到与所述关键词匹配的控件时,将所述控件对应的图层类型确定为所述第一图层的图层类型;
[0392] 在未查找到与所述关键词匹配的控件时,执行对所述控件名进行解析的步骤。
[0393] 示例性的,在一个例子中,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
[0394] 在根据所述第一控件的控件信息无法确定所述第一图层的图层类型时,获取所述第一应用当前显示的画面,所述当前显示的画面中包括所述第一控件;
[0395] 根据所述当前显示的画面中所述第一控件显示的内容确定所述第一图层的图层类型。
[0396] 示例性的,在一个例子中,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
[0397] 从所述第二控件的控件信息中提取所述第二控件的控件名和所述第二控件的尺寸信息;
[0398] 对所述控件名进行解析,在从所述控件名中解析出所述第二控件的控件类型、所述第一应用的包名和所述第二控件所在的界面信息时,根据所述控件类型、所述包名、所述界面信息和所述尺寸信息,确定所述第二图层的图层类型;
[0399] 在从所述控件名中解析出所述第二控件的控件类型和所述第二控件所在的界面信息,未解析出所述第一应用的包名时,获取绘制所述第二控件的进程的进程标识号PID,根据所述PID确定所述第二控件的来源,根据所述控件类型、所述来源、所述界面信息和所述尺寸信息,确定所述第二图层的图层类型,所述来源包括所述第一应用的包名。
[0400] 示例性的,在一个例子中,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
[0401] 在根据所述第二控件的控件信息无法确定所述第二图层的图层类型时,获取所述第一应用当前显示的画面,所述当前显示的画面中包括所述第二控件;
[0402] 根据所述当前显示的画面中所述第二控件显示的内容确定所述第二图层的图层类型。
[0403] 示例性的,在一个例子中,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
[0404] 根据所述第一图层的图层类型和所述第二图层的图层类型,生成第一显示画面和第二显示画面,并将所述第一显示画面缓存到第一显示缓存,将所述第二显示画面缓存到第二显示缓存;
[0405] 按照缓存顺序,从所述第一显示缓存中取出所述第一显示画面,并将所述第一显示画面在所述第一电子设备的屏幕进行显示;
[0406] 对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容;
[0407] 将所述投屏内容发送至所述第二电子设备,供所述第二电子设备解码所述投屏内容,得到所述第二显示画面,并在所述第二电子设备的屏幕进行显示。
[0408] 示例性的,在一个例子中,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
[0409] 确定所述第一显示缓存对应的第一图层过滤规则和所述第二显示缓存对应的第二图层过滤规则;
[0410] 根据所述第一图层过滤规则、所述第一图层的图层类型和所述第二图层的图层类型,确定所述第一显示画面包括所述第一图层和所述第二图层;
[0411] 获取所述第一图层中所述第一控件的资源和所述第二图层中所述第二控件的资源,根据所述第一控件的资源和所述第二控件的资源,生成所述第一显示画面,并将所述第一显示画面缓存到第一显示缓存;
[0412] 根据所述第二图层过滤规则、所述第一图层的图层类型和所述第二图层的图层类型,确定所述第二显示画面包括所述第一图层;
[0413] 获取所述第一图层中所述第一控件的资源,根据所述第一控件的资源生成所述第二显示画面,并将所述第二显示画面缓存到所述第二显示缓存。
[0414] 示例性的,在一个例子中,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
[0415] 获取所述第一电子设备的第一设备标识和所述第二电子设备的第二设备标识;
[0416] 在图层过滤规则表中查找与所述第一设备标识匹配的图层过滤规则,将查找到的图层过滤规则确定为所述第一显示缓存对应的所述第一图层过滤规则;
[0417] 在所述图层过滤规则表中查找与所述第二设备标识匹配的图层过滤规则,将查找到的图层过滤规则确定为所述第二显示缓存对应的所述第二图层过滤规则。
[0418] 示例性的,在一个例子中,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
[0419] 在所述第一电子设备的屏幕上显示可供用户操作的图层过滤规则决策界面,所述图层过滤规则决策界面包括所述第一控件和所述第一控件所在的所述第一图层的图层类型,所述第二控件和所述第二控件所在的所述第二图层的图层类型;
[0420] 响应于用户为所述第一显示缓存设置所述第一图层过滤规则的操作行为,生成所述第一图层过滤规则;
[0421] 响应于用户为所述第二显示缓存设置所述第二图层过滤规则的操作行为,生成所述第二图层过滤规则。
[0422] 示例性的,在一个例子中,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
[0423] 获取所述第一电子设备的第一屏幕纵横比和所述第二电子设备的第二屏幕纵横比;
[0424] 在所述第一屏幕纵横比和所述第二屏幕纵横比不同时,对所述第二显示缓存中的所述第二显示画面进行去黑边处理,并录制去黑边后的所述第二显示画面得到所述投屏内容;
[0425] 在所述第一屏幕纵横比和所述第二屏幕纵横比相同时,对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容。
[0426] 示例性的,在一个例子中,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
[0427] 获取所述第二电子设备的显示能力;
[0428] 根据所述显示能力确定视频流刷新帧率;
[0429] 根据所述视频流刷新帧率,对所述第二显示缓存中的所述第二显示画面进行录制,得到投屏内容。
[0430] 其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
[0431] 本实施例还提供一种计算机可读存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备/网络设备(例如OTA服务器、CABE服务器)上运行时,使得电子设备/网络设备执行上述相关方法步骤实现上述实施例中的投屏方法。
[0432] 本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的投屏方法。
[0433] 另外,本申请的实施例还提供一种芯片(也可以是组件或模块),该芯片可包括一个或多个处理电路和一个或多个收发管脚;其中,所述收发管脚和所述处理电路通过内部连接通路互相通信,所述处理电路执行上述相关方法步骤实现上述实施例中的投屏方法,以控制接收管脚接收信号,以控制发送管脚发送信号。
[0434] 其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
[0435] 通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0436] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0437] 作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0438] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0439] 本申请各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本申请的范围之内。
[0440] 集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0441] 上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。