一种同源投屏方法及电子设备与流程
未命名
09-13
阅读:99
评论:0

1.本技术涉及终端技术领域,尤其涉及一种同源投屏方法及电子设备。
背景技术:
2.多台电子设备协同工作给用户的生活和工作带来便利。以消息流转为例,在设备a接收到消息通知之后,设备a可以将该消息通知流转到设备b。这样,即使用户当前没有使用设备a,也可以在设备b上查看该消息通知,当然,用户指示设备b显示来自设备a的消息通知时,设备b可以显示设备a对应的同源投屏窗口,该同源投屏窗口用于显示上述消息通知对应的应用界面。上述显示同源投屏窗口的过程可称为同源投屏。
3.然而,同源投屏无法释放设备a,上述同源投屏窗口中的显示内容需与设备a同步。这样,在设备a处于锁屏、息屏等状态的场景下,针对设备a进行同源投屏时,会出现显示异常。
技术实现要素:
4.本技术实施例提供一种同源投屏方法及电子设备,用于改善电子设备在息屏、锁屏期间,同源投屏异常的问题。
5.为达到上述目的,本技术的实施例采用如下技术方案:
6.第一方面,本技术实施例提供的一种同源投屏方法,应用于第一设备和第二设备,第一设备处于息屏状态或锁屏状态,方法包括:第一设备接收第一消息;第一设备向第二设备转发第一消息,第二设备显示第一控件,第一控件用于显示来自第一设备的第一消息;第二设备响应于用户对第一控件的操作,向第一设备发送第一请求;第一设备响应于第一请求,创建第一显示区域,第一显示区域是第一设备中不可见的显示区域;第一显示区域不休眠且不绘制锁屏图层;第一设备启动第一应用,其中,第一消息是第一应用的应用消息,第一应用包括第一进程,第一进程不休眠;第一设备在第一显示区域中绘制第一进程的应用界面之后,向第二设备发送第一数据;第二设备响应于第一数据,显示第一窗口,第一窗口中显示第一显示区域中绘制的显示内容。
7.其中,第一设备处于锁屏或者息屏状态时,用户无需在第一设备上进行任何操作,可以直接在第二设备上进行操作,即上述对该第一控件的操作,从而拉起第一设备上的第一应用在第二设备上投屏。其中,第一应用为安装在第一设备上的应用程序,第二设备是否安装第一应用不影响上述系统的实现。
8.在上述实施例中,第二设备于第一窗口显示的第一数据来自于第一显示区域中绘制的内容,该第一显示区域不休眠且不绘制锁屏图层,同时,绘制于第一显示区域的第一进程也是前台可见,且不休眠的进程。这样,投屏到第一窗口中的内容不会受第一设备息屏或锁屏的影响。
9.在一些实施例中,第一请求中携带第一应用的应用标识,在第一设备启动第一应用之前,方法还包括:第一设备响应于第一请求,给第一应用的第一进程标记第一标签;在
确定第一进程标记有第一标签的情况下,第一设备配置第一进程在生命周期中不休眠,以及配置第一进程的应用界面在生命周期中允许绘制于第一显示区域。
10.在一些实施例中,向第二设备发送第一数据之前,方法还包括:第一设备根据绘制于第一显示区域的应用界面,生成第一数据,第一数据包括应用界面对应的应用图层。
11.在一些实施例中,第二设备响应于用户对第一控件的操作,在向第一设备发送第一请求之前,方法还包括:第二设备显示第二窗口,第二窗口为分布式认证窗口;在显示第二窗口期间,第二设备接收用户输入的密码信息;第二设备向第一设备发送密码信息;在密码信息与第二设备中预置的解锁密钥匹配时,向第二设备发送第一响应信息,第一响应信息指示第二设备通过分布式认证。
12.在上述实施例中,通过分布式认知,提高投屏的信息安全。
13.在一些实施例中,在第二设备显示第二窗口之前,方法还包括:第二设备确定第一设备中已配置有解锁密钥。
14.在一些实施例中,在第二设备显示第二窗口之前,方法还包括:第二设备获取相邻上一次接收到第一响应信息的第一时间点;第二设备确定第一时间间隔大于第一阈值,第一时间间隔是第一时间点与当前系统时间之间的间隔。
15.在一些实施例中,在向第一设备发送第一请求之前,方法还包括:第二设备确定第一设备中未配置解锁密钥,所述解锁密钥是解除所述第一设备锁屏状态的密钥。
16.在一些实施例中,在所述向所述第一设备发送第一请求之前,所述方法还包括:所述第二设备确定所述第一设备中已配置解锁密钥;第二设备获取第一时间点,第一时间点是相邻上一次接收到第一设备反馈的第一响应信息的系统时间,第一响应信息指示第二设备发出的密码信息与第一设备中内置的解锁密钥相匹配;第二设备确定第二时间间隔不大于第一阈值,第二时间间隔是第一时间点与当前系统时间之间的间隔。
17.在一些实施例中,在一些实施例中,在创建第一显示区域之后,方法还包括:第一设备给第一显示区域标记第二标签;在确定第一显示区域标记有第二标签之后,第一设备配置第一显示区域不休眠,以及配置不在第一显示区域上绘制锁屏图层。
18.在一些实施例中,方法还包括:第二设备响应于用户指示查看消息列表的操作,显示第三窗口,第三窗口中包括第二控件,第二控件显示有来自第一设备的第二消息,第二消息是第二应用的应用消息;在第一设备中的第二应用启用了应用锁的情况下,第二设备响应于用户对第二控件的操作,显示第一提醒信息,第一提醒信息指示第二应用受应用锁保护,无法进行投屏。
19.在一些实施例中,方法还包括:第二设备响应于用户指示查看消息列表的操作,显示第三窗口,第三窗口中包括第三控件,第三控件显示有来自第三设备的第三消息;在用于投屏的通信通道被占用的情况下,第二设备响应于用户对第三控件的操作,显示第二提醒信息,第二提醒信息指示当前存在网络连接冲突的问题。
20.在一些实施例中,方法还包括:第二设备响应于用户指示查看消息列表的操作,显示第三窗口,第三窗口中包括第三控件,第三控件显示有来自第三设备的第三消息;在第二设备与第三设备之间网络质量不符合预设条件的情况下,第二设备响应于用户对第三控件的操作,显示第三提醒信息,第三提醒信息指示网络质量影响本次投屏。
21.在一些实施例中,在第二设备显示第一窗口期间,如果第一设备接收到用户指示
解除锁屏或息屏状态的操作,第一设备继续保持锁屏或息屏状态。
22.在一些实施例中,在第二设备显示第一窗口之后,方法还包括:第一设备响应于用户指示解除锁屏或息屏状态的操作,显示第一进程对应的应用界面。
23.第二方面,本技术实施例提供的一种同源投屏方法,应用于第一设备,第一设备与第二设备通信连接,第一设备处于息屏状态或锁屏状态,方法包括:第一设备接收第一消息;第一设备向第二设备转发第一消息,指示第二设备显示第一控件,第一控件用于显示第一消息;第一设备响应于第一请求,创建第一显示区域,第一显示区域是第一设备中不可见的显示区域;第一显示区域不休眠且不绘制锁屏图层;其中,第一请求是第二设备响应于用户对第一控件的操作,向第一设备发送的请求;第一设备启动第一应用,其中,第一消息是第一应用的应用消息,第一应用包括第一进程,第一进程不休眠;第一设备在第一显示区域中绘制第一进程的应用界面之后,向第二设备发送第一数据,指示第二设备显示第一窗口,第一窗口中显示第一显示区域中绘制的显示内容。
24.在一些实施例中,第一请求中携带第一应用的应用标识,在第一设备启动第一应用之前,方法还包括:第一设备响应于第一请求,给第一应用的第一进程标记第一标签;在确定第一进程标记有第一标签的情况下,第一设备配置第一进程在生命周期中不休眠,以及配置第一进程的应用界面在生命周期中允许绘制于第一显示区域。
25.在一些实施例中,向第二设备发送第一数据之前,方法还包括:第一设备根据绘制于第一显示区域的应用界面,生成第一数据,第一数据包括应用界面对应的应用图层。
26.在一些实施例中,在创建第一显示区域之后,方法还包括:第一设备给第一显示区域标记第二标签;在确定第一显示区域标记有第二标签之后,第一设备配置第一显示区域不休眠,以及配置不在第一显示区域上绘制锁屏图层。
27.在一些实施例中,在第二设备显示第一窗口之后,方法还包括:第一设备响应于用户指示解除锁屏或息屏状态的操作,显示第一进程对应的应用界面。
28.第三方面,本技术实施例提供的一种同源投屏方法,应用于第二设备,第二设备与第一设备通信连接,第一设备处于息屏状态或锁屏状态,方法包括:第二设备接收第一设备转发的第一消息;第二设备显示第一控件,第一控件用于显示来自第一设备的第一消息;第二设备响应于用户对第一控件的操作,向第一设备发送第一请求;其中,第一请求,用于指示第一设备创建第一显示区域,第一显示区域是第一设备中不可见的显示区域;第一显示区域不休眠且不绘制锁屏图层;第一请求,还用于指示第一设备启动第一应用,第一消息是第一应用的应用消息,第一应用包括第一进程,第一进程不休眠;第一进程的应用界面绘制于第一显示区域;第二设备接收第一设备发送的第一数据;第二设备响应于第一数据,显示第一窗口,第一窗口中显示第一显示区域中绘制的显示内容。
29.在一些实施例中,第二设备响应于用户对第一控件的操作,在向第一设备发送第一请求之前,方法还包括:第二设备显示第二窗口,第二窗口为分布式认证窗口;在显示第二窗口期间,第二设备接收用户输入的密码信息;第二设备向第一设备发送密码信息;在密码信息与第二设备中预置的解锁密钥匹配时,向第二设备发送第一响应信息,第一响应信息指示第二设备通过分布式认证。
30.在一些实施例中,在第二设备显示第二窗口之前,方法还包括:第二设备确定第一设备中已配置有解锁密钥。
31.在一些实施例中,在第二设备显示第二窗口之前,方法还包括:第二设备获取相邻上一次接收到第一响应信息的第一时间点;第二设备确定第一时间间隔大于第一阈值,第一时间间隔是第一时间点与当前系统时间之间的间隔。
32.在一些实施例中,在向第一设备发送第一请求之前,方法还包括:第二设备确定第一设备中未配置解锁密钥,解锁密钥是解除第一设备锁屏状态的密钥。
33.在一些实施例中,在向第一设备发送第一请求之前,方法还包括:第二设备确定第一设备中已配置解锁密钥;第二设备获取第一时间点,第一时间点是相邻上一次接收到第一设备反馈的第一响应信息的系统时间,第一响应信息指示第二设备发出的密码信息与第一设备中内置的解锁密钥相匹配;第二设备确定第二时间间隔不大于第一阈值,第二时间间隔是第一时间点与当前系统时间之间的间隔。
34.在一些实施例中,方法还包括:第二设备响应于用户指示查看消息列表的操作,显示第三窗口,第三窗口中包括第二控件,第二控件显示有来自第一设备的第二消息,所述第二消息是第二应用的应用消息;在所述第一设备中的第二应用启用了应用锁的情况下,所述第二设备响应于用户对所述第二控件的操作,显示第一提醒信息,所述第一提醒信息指示所述第二应用受应用锁保护,无法进行投屏。
35.在一些实施例中,方法还包括:第二设备响应于用户指示查看消息列表的操作,显示第三窗口,第三窗口中包括第三控件,第三控件显示有来自第三设备的第三消息;在用于投屏的通信通道被占用的情况下,第二设备响应于用户对第三控件的操作,显示第二提醒信息,第二提醒信息指示当前存在网络连接冲突的问题。
36.在一些实施例中,方法还包括:第二设备响应于用户指示查看消息列表的操作,显示第三窗口,第三窗口中包括第三控件,第三控件显示有来自第三设备的第三消息;在第二设备与第三设备之间网络质量不符合预设条件的情况下,第二设备响应于用户对第三控件的操作,显示第三提醒信息,第三提醒信息指示网络质量影响本次投屏。
37.在一些实施例中,在第二设备显示第一窗口期间,如果第一设备接收到用户指示解除锁屏或息屏状态的操作,第一设备继续保持锁屏或息屏状态。
38.第四方面,本技术实施例提供的一种电子设备,电子设备包括一个或多个处理器和存储器;所述存储器与处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,所述一个或多个处理器,用于执行第二方面、第三方面及其可能的实施例中的方法。
39.第五方面,本技术实施例提供的一种计算机存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行上述第二方面、第三方面及其可能的实施例中的方法。
40.第六方面,本技术提供一种计算机程序产品,当计算机程序产品在上述电子设备上运行时,使得电子设备执行上述第二方面、第三方面及其可能的实施例中的方法。
41.可以理解地,上述各个方面所提供的电子设备、计算机存储介质以及计算机程序产品均应用于上文所提供的对应方法,因此,其所能达到的有益效果可参考上文所提供的对应方法中的有益效果,此处不再赘述。
communication,nfc)网络等。又示例性地,上述局域网络也可以是有线通信网络。例如,视频图像配接器(video graphics array,vga)、数字视频接口(digital visual interface,dvi)、高清多媒体接口(high definition multimedia interface,hdmi)或数据传输线等建立的通信网络。再示例性地,上述局域网络还可以是远程网络。
72.在设备1、设备2和设备3彼此经过信任互认之后,由设备1、设备2和设备3组成的系统又可称为信任环。另外,设备间进行信任互认的过程可参考相关技术,例如,可以根据设备间是否登录有相同的系统账号、是否已进行授权以及是否采用近场通信方式等一项或多项进行判断,具体在此不再赘述。
73.可以理解地,在同一信任环中,多台电子设备之间可以安全地进行数据共享,共享的数据包括但不限于消息提醒、消息记录以及其他电子设备的用户信息、设备类型、各个应用的运行状态、各个应用的标识、最近使用应用的标识的同步等等。
74.这样,在信任环内,可以实现多样的协同服务,如,协同通话、协同通知、投屏等服务。
75.以协同通知为例,在图1所示的信任环中,设备1接收到消息通知,不仅可以由设备1显示该消息通知,还可以将该消息通知流转到设备2和/或设备3,由设备2和/或设备3进行显示,这样,方便用户跨设备查看消息,提高设备间协同工作的效率。同样,设备2也可以将接收到的消息通知流转到设备1和/或设备3,设备3也可以将接收到的消息通知流转到设备1和/或设备2。
76.当然,设备间仅仅进行消息的流转是不够的,如果用户在设备2上查看了来自设备1的消息通知之后,往往需要通过设备2处理该消息通知,这就需要将设备1投屏至设备2。
77.在投屏场景中包括发送端和接收端。其中,发送端将显示信息发送给接收端显示,即发送端向接收端投屏。为了方便描述,本文将发送端称为源端设备,将接收端称为目标设备。其中,信任环中任意一台电子设备均可以作为源端设备,信任环中与源端设备不同的其他设备可以作为目标设备,同一时刻下,一台源端设备对应一台目标设备。可以理解的是,除了源端设备和目标设备之外,发送端和接收端还可以有其它称呼,比如,发送端是主动投屏设备,接收端是被动投屏设备;或者,发送端是第一电子设备,接收端是第二电子设备等等,本技术对此不作限定。示例的,投屏场景中,源端设备与目标设备之间通过某种协议,实现源端设备上的内容在目标设备上显示。常见的协议如dlna(digital living network alliance,数字生活网络联盟)协议和chromecast协议、miracast协议、airplay协议等。
78.目前,常用的投屏技术包括同源投屏和异源投屏。
79.其中,同源投屏场景下,源端设备将前台的显示信息(如,应用a对应的应用界面a)投屏到目标设备,也即,目标设备显示源端设备对应的投屏窗口,然后,在该投屏窗口中显示显示信息(如,应用界面a)。当源端设备前台显示信息发生变化,比如从应用界面a切换为应用a的应用界面b,对应的,目标设备上的投屏窗口随即也变化,即从应用界面a切换为应用界面b。再比如,源端设备从应用界面a切换为主界面,对应的,目标设备上的投屏窗口随即也变化,即从应用界面a切换为源端设备的主界面。也就是说,同源投屏场景下,源端设备向目标设备投屏时,目标设备上的显示信息与源端设备前台的显示信息是同步的。同源投屏采取的是扩展屏幕的方式,将源端设备启动的应用界面投屏至目标设备。
80.异源投屏场景下,源端设备向目标设备投屏应用b的应用界面c的场景下,源端设
备上显示应用b的应用界面c,目标设备中的投屏窗口显示应用b的应用界面c,之后,如果源端设备响应用户操作切动显示应用b的应用界面d,目标设备中的投屏窗口显示应用b的应用界面d。如果源端设备响应用户操作切动显示应用c的应用界面e,或者切换显示主界面,目标设备中的投屏窗口继续显示应用b的应用界面。换句话说,源端设备将应用b整体投屏到目标设备,即异源投屏的投屏粒度是应用。
81.可以理解,同源投屏方式与异源投屏方式各有优缺点。例如,同源投屏方式可以保证应用的连续性;而异源投屏方式,在不同屏幕间切换时,需要重新启动应用。本技术实施例中,以同源投屏场景为例进行描述。
82.如图2所示,以源端设备为手机、目标设备为笔记本电脑为例。在手机和笔记本电脑属于同一局域网络且完成信任互认之后,手机与笔记本电脑属于同一信任环,也就是,手机和笔记本电脑之间可以建立用于流转消息的通信通道。
83.在一些实施例中,手机中可以安装有多类应用程序,手机运行期间,可以接收各应用程序推送的应用消息,该应用消息来自于应用程序对应的消息服务器。
84.示例性地,手机中可以安装有社交应用,手机可以接收社交应用推送的应用消息,如,社交应用中的联系人小明所发送的消息“你今天去跑步吗?”。
85.在接收到应用程序推送的应用消息之后,如果手机处于解锁且亮屏的状态,手机可以在当前界面显示提示信息。比如,在接收到社交应用推送的应用消息时,如果手机的当前界面为主界面201,那么在主界面201中显示通知气泡202,该通知气泡202用于显示手机所接收到的应用消息。
86.然后,手机可以通过与笔记本电脑之间用于流转消息的通信通道,将上述应用消息(比如,社交应用推送的“你今天去跑步吗?”)流转到笔记本电脑。
87.在一些实施例中,在笔记本电脑接收到来自手机的应用消息之后,可以显示针对上述应用消息的提示信息。其中,上述提示信息可以采用消息通知控件的形式显示于笔记本电脑的桌面,示例性地,上述消息通知控件可以是悬浮窗口、消息气泡、消息卡片等,当然,本技术实施例中,对于其显示形态不作具体限定。比如,图2所示,在桌面203中显示消息卡片204,该消息卡片204用于显示上述应用消息的相关内容。其中,相关内容可以是该应用消息来自手机,也可以是该应用消息来自于社交应用,还可以是该应用消息的主要内容等。可以理解地,本技术实施例中对于消息卡片204的显示位置不做具体限定。
88.在图2所示的场景下,如果用户正在使用笔记本电脑,那么桌面203中显示的消息卡片204可以提醒用户关注到手机当前接收到了应用消息。这样,即使用户当前未直接使用手机,或者手机不在身边,也能够了解该应用消息的简要内容,避免消息的遗漏。
89.在一些实施例中,上述消息卡片204可以具有显示时限。比如,预先设置显示时限为时长1,笔记本电脑响应于手机转发的上述应用消息,开始显示消息卡片204。在消息卡片204显示的时长超过时长1,且未检测到用户选中该消息卡片204,笔记本电脑可以取消显示该消息卡片204。
90.示例性地,在笔记本电脑的显示屏是触控屏时,笔记本电脑检测到用户与触控屏中的显示区域1存在接触,笔记本电脑确定用户指示选中消息卡片204。其中,上述显示区域1是触控屏上显示消息卡片204的区域。又示例性地,在笔记本电脑已接入鼠标时,检测到鼠标对应的光标位于显示区域1内,并输入确认指令,笔记本电脑确定用户指示选中消息卡片
204。
91.在一些实施例中,在笔记本电脑显示消息卡片204之后,用户可以通过操作笔记本电脑的方式处理该应用消息,也可以选择直接操作手机的方式处理该应用消息。
92.其中,直接操作手机处理应用消息的方式可以参考相关技术。例如,手机可以响应于用户点击通知气泡202的操作,前台运行社交应用,并显示包含上述社交消息的应用界面。这样,用户可以通过在上述应用界面上的操作,回复该应用消息。再例如,手机响应用户指示启动社交应用的操作,显示社交应用的应用界面,这样,用户可以通过在社交应用提供的应用界面上操作,查看上述应用消息或回复该应用消息等。
93.另外,选择操作笔记本电脑处理应用消息,就会触发手机与笔记本电脑之间的投屏。示例性地,用户可以在笔记本电脑上选中消息卡片204。在笔记本电脑可以检测到用户选中消息卡片204之后,笔记本电脑可以遥控手机前台运行社交应用。在社交应用进入前台运行状态之后,手机可以显示包含上述应用消息的应用界面。另外,笔记本电脑也可以在桌面203上显示手机对应的投屏窗口。其中,上述手机对应的投屏窗口,用于同步显示手机的当前界面。比如,在手机的当前界面是社交应用的应用界面时,该投屏窗口也显示该应用界面。在笔记本电脑显示投屏窗口之后,用户可以通过笔记本电脑中的投屏窗口,操控手机,如,操作手机处理上述应用消息。
94.作为一种实现方式,在笔记本电脑确定用户选中消息卡片204之后,通过笔记本电脑和手机之间的数据交互,手机可以在可见的显示区域(也即,手机显示屏)上渲染对应的应用界面。在显示屏上渲染的内容可以称为手机的前台显示信息。另外,手机还可以将前台显示信息镜像到虚拟界面。可以理解的,该虚拟界面是面向笔记本电脑的服务,该虚拟界面在手机的显示屏中不可见,这样,笔记本电脑调用该虚拟界面时,可以将该虚拟界面中的内容显示到笔记本电脑中的投屏窗口,笔记本电脑的投屏窗口可以镜像手机的显示屏。此后,投屏窗口所显示的内容也随着手机显示屏中所显示的内容同步变化。这样,用户不仅可以通过笔记本电脑向手机发送控制信息,还可以通过笔记本电脑查看手机对于控制信息的响应情况,从而,实现实时的遥控。
95.在一些实施例中,在笔记本电脑检测用户指示选中消息卡片204之后,如图3所示,手机可以从显示主界面201切换至显示应用界面301。该应用界面301可以是社交应用所对应的应用界面,该应用界面301中包含应用消息,也即,消息卡片204所指示的应用消息。
96.如图3所示,在笔记本电脑检测用户指示选中消息卡片204之后,笔记本电脑的桌面203上,可以显示投屏窗口302。在显示投屏窗口302期间,该投屏窗口302所显示的内容与手机所显示的内容一致。比如,图3所示,在手机显示应用界面301的情况下,该投屏窗口302也显示应用界面301。
97.此后,用户可以通过笔记本电脑所显示的投屏窗口302,遥控手机。如,遥控手机输入回复内容,并发送给指定联系人(小明)。再如,遥控手机关闭社交应用。再如,遥控手机跳转启用其他应用程序等。
98.另需说明的是,在笔记本电脑和手机之间采用同源投屏的场景下,投屏窗口302中的显示界面与手机显示屏中所示的界面同步变化。
99.当然,该投屏窗口302上配置有关闭控件。笔记本电脑可以响应于用户对“关闭控件”的选中操作,取消显示上述投屏窗口302。在笔记本电脑取消显示投屏窗口302之后,手
机也取消投屏。
100.上述图2和图3,描述了手机在亮屏、解锁的状态下,手机接收到消息通知之后,将其流转至笔记本电脑,然后,用户操作笔记本电脑上选中显示该消息通知的消息卡片,触发手机向笔记本电脑进行同源投屏的过程。
101.在相关技术中,如图4a所示,手机在息屏状态下,手机显示屏处于黑屏状态。此时,如果手机接收到来自社交应用的应用消息,手机可以短暂地亮屏并显示通知气泡,也可以不显示通知气泡,继续保持黑屏状态。可以理解地,上述黑屏状态是指手机的显示屏未点亮或者仅显示息屏屏保图像的状态。
102.如图4b所示,手机在锁屏状态下,手机显示屏可以显示锁屏界面或者也处于黑屏状态。此时,如果手机接收到来自社交应用的应用消息,手机可以在锁屏界面上显示通知气泡。
103.在图4a和图4b所示的场景下,手机同样可以将该应用消息流转至笔记本电脑。这样,笔记本电脑依然可以在桌面203中显示消息卡片204。
104.当然,在图4a和图4b所示的场景下,笔记本电脑显示消息卡片204期间,即使笔记本电脑确定用户指示选中消息卡片204,手机继续保持黑屏状态或显示锁屏界面。可以理解地,在保持黑屏状态或显示锁屏界面期间,手机无法前台运行社交应用,也就是,也无法显示社交应用的应用界面。
105.对应地,如图5a所示,即使笔记本电脑显示手机对应的投屏窗口(如,投屏窗口501),该投屏窗口501也同样处于黑屏状态。
106.对应地,如图5b所示,即使笔记本电脑显示手机对应的投屏窗口(如,投屏窗口501),该投屏窗口501也同样显示锁屏界面。
107.可见,在图5a和图5b所示的场景中,无论投屏窗口501处于黑屏状态,还是显示锁屏界面,用户无法通过笔记本电脑遥控手机,并处理上述应用消息。也即,用户只能选择解锁手机,直接操作手机,完成针对应用消息的处理。
108.也就是,在手机处于息屏或者锁屏状态时,就存在这样一种场景:当用户在家中书房或客厅使用笔记本电脑玩游戏或者办公,手机被放置在其他房间;在社交应用上的联系人(小明)给用户的手机发送一条消息时,用户可以立即在笔记本电脑上得知自己的手机收到了一条消息通知。但这种场景下,用户往往专注于在笔记本电脑上游戏或者办公,并不想起身去房间拿手机查看或回复消息,而想在笔记本电脑上启动展示该条消息的应用窗口投屏(也即,手机对应的投屏窗口),并通过笔记本电脑处理该消息。但由于此时在其他房间的手机处于锁屏息屏状态,基于现有技术用户无法直接在笔记本电脑上启动展示该条消息的应用窗口投屏,而必须先去房间将手机解锁并使其处于亮屏状态之后,才能够在笔记本电脑上启动手机对应的投屏窗口。
109.可见,当手机处于锁屏或息屏状态时,用户在笔记本电脑上启动投屏十分不便且耗费时间。当然,在相关技术中,手机同时处于息屏锁屏状态时,同样存在类似的问题,在此不再赘述。
110.为了改善上述问题,本技术实施例中提供了一种同源投屏方法,该方法可以应用于支持跨设备投屏的电子设备。示例性的,本技术实施例中的电子设备可以是手机、平板电脑、台式机(桌面型电脑)、手持计算机、笔记本电脑(膝上型电脑)、超级移动个人计算机
(ultra-mobile personal computer,umpc)、上网本、个人数字助理(personal digital assistant,pda)、增强现实(augmented reality,ar)\虚拟现实(virtual reality,vr)设备等可以安装上述邮件应用的设备,本技术实施例对电子设备的具体形态不作特殊限制。另外,电子设备的操作系统可以是安卓(android)、ios系统或者其他操作系统,本技术实施例对电子设备的操作系统类型不做限定。
111.采用本技术提供的启动投屏的方法,即使面对前述场景,用户无需再去其他房间对手机进行操作,而是可以继续待在书房或客厅,只要在笔记本电脑上点击手机对应的消息卡片,就能在笔记本电脑上启动展示手机对应的投屏窗口,实现同源投屏的镜像显示,从而便于用户对该条消息进行处理,提高了用户体验。
112.下面结合图6a和图6b,以手机为源端设备,笔记本电脑为目标设备为例,介绍本技术提供的同源投屏方法的实现细节。
113.如图6a所示,手机在息屏状态下,如果手机接收到来自社交应用的应用消息,手机可以短暂地亮屏并显示通知气泡,也可以不显示任何内容,继续保持黑屏。另外,手机可以将该应用消息流转至笔记本电脑。这样,笔记本电脑依然可以在桌面203中显示消息卡片204。
114.在显示消息卡片204期间,笔记本电脑确定用户指示选中消息卡片204,如图6a所示,手机继续保持黑屏状态。笔记本电脑可以显示投屏窗口601,该投屏窗口601可以显示提示等待的信息,比如,文字“等待加载”。另外,在笔记本电脑确定用户指示选中消息卡片204之后,笔记本电脑还可以指示手机启动社交应用。当然,手机启动社交应用之后,手机可以不显示包含上述应用消息的应用界面,也即,手机可以继续保持黑屏。但是,手机会将包含上述应用消息的应用界面投影到笔记本电脑中的投屏窗口601。这样,投屏窗口601中显示的内容从“提示等待的信息”变为应用消息所对应的应用界面。如此,用户可以通过笔记本电脑中的投屏窗口601,遥控手机处理应用消息。
115.如图6b所示,手机在锁屏状态下,如果手机接收到来自社交应用的应用消息,手机可以短暂地显示通知气泡,也可以继续只显示锁屏界面。另外,手机可以将该应用消息流转至笔记本电脑。这样,笔记本电脑依然可以在桌面203中显示消息卡片204。
116.在显示消息卡片204期间,笔记本电脑确定用户指示选中消息卡片204,如图6b所示,手机继续显示锁屏界面。笔记本电脑可以显示投屏窗口601,该投屏窗口601可以显示提示等待的信息,比如,文字“等待加载”。在笔记本电脑确定用户指示选中消息卡片204之后,笔记本电脑还可以指示手机启动社交应用。当然,手机启动社交应用之后,手机可以继续显示锁屏界面。但是,手机会将包含上述应用消息的应用界面投屏到笔记本电脑中的投屏窗口601。这样,投屏窗口601中显示的内容从“提示等待的信息”变为应用消息所对应的应用界面。如此,用户可以通过笔记本电脑中的投屏窗口601,遥控手机处理应用消息。
117.另外,在投屏窗口601已显示来自手机的投屏内容(比如,包含应用消息的应用界面)之后,如果用户点亮并解锁手机,该手机的显示屏可以显示与投屏窗口601相同的内容。
118.在另一些实施例中,笔记本电脑可以接收同一信任环中任意设备流转过来的一条或多条应用消息。示例性地,笔记本电脑可以响应用户操作,显示信息列表窗口,该信息列表窗口可以集中显示已接收到的消息通知,或者集中显示已接收且未处理过的消息通知,如,来自第一设备中第一应用的第一消息、来自第一设备中第二应用的第二消息及来自第
三设备的第三消息。作为一种实现方式,上述消息通知也可以采用消息卡片的形式显示于信息列表窗口,比如,第二控件用于显示第二消息,第三控件用于显示第三消息。
119.继续以笔记本电脑包含触控屏为例。在笔记本电脑检测到指定操作,例如,图7所示,笔记本电脑检测到用户在触控屏上的下滑操作,可以显示信息列表窗口701(第三窗口)。该信息列表窗口701中显示有来自设备1的应用消息(如消息卡片804)、来自设备3的应用消息(如消息卡片805)等。可以理解地,信息列表窗口701中所显示的消息通知均为笔记本电脑近期接收到的、来自信任环中其他设备的信息。其中,消息卡片804与设备1中社交应用推送的消息对应。消息卡片805与设备3中信息应用推送的消息(比如,短信)对应。
120.与显示于桌面的消息卡片204相同,在笔记本电脑检测到用户选中信息列表窗口701中任意一条消息卡片时,均可触发该消息卡片对应的设备进行投屏。例如,笔记本电脑检测到用户选中消息卡片805时,可以触发设备3进行投屏,这样,设备3为源端设备,笔记本电脑为对应的目标设备。再例如,笔记本电脑检测到用户选中消息卡片804时,可以触发设备1(也即,手机)进行投屏,这样,手机为源端设备,笔记本电脑为对应的目标设备。
121.当然,笔记本电脑指示对应的设备进行投屏之后,也可能出现投屏失败的情况。比如,消息卡片对应的应用程序受应用锁保护的情况下,导致投屏失败。再比如,用于投屏的通道被其他设备占用的情况下,导致投屏失败。再例如,网络不稳定的情况下,导致投屏失败等。
122.首先,应用锁指的是源端设备的用户为了保护某一应用的安全性或隐私性而针对该应用设置了保护,需要输入预先设置好的密码或指纹等才能打开该应用。所以,在源端设备处于锁屏息屏状态的场景中,出于对源端设备安全性和隐私性的考虑,一些可能的实施例中,实际投屏之前,会判断应用程序a(例如,用户在笔记本电脑上选中的消息卡片所对应的应用程序)是否被源端设备可选地增加了一层保护。如果源端设备为该应用程序a设置了应用锁,说明该应用程序a是源端设备的机主希望在每次访问时都需要输入密码或指纹等进行解锁的,那么对于这类强隐私保护的应用就不适用在源端设备处于锁屏息屏状态下直接在目标设备一侧启动投屏,这违背了用户设置应用锁的初衷。
123.因此,如图8所示,笔记本电脑检测到用户选中消息卡片805之后,向对应的设备(也即,设备3)发送查询信息1,该查询信息1用于查询设备3是否为信息应用配置有应用锁。如果设备3中为信息应用配置有应用锁,那么设备3会向笔记本电脑发送反馈信息1,该反馈信息1指示信息应用当前受应用锁保护。这样,笔记本电脑在接收到反馈信息1之后,可以显示提醒信息801,又称为第一提醒信息。该提醒信息801用于提示用户被选中的消息卡片对应的应用程序受应用锁保护。例如,可以是文字“信息应用受应用锁保护,请前往设备3解除应用锁”。另外,提醒信息801可以以悬浮窗或者卡片的形式显示在笔记本电脑上,本技术实施例对提醒信息的显示形式不作限定。
124.其次,源端设备与目标设备可以通过wlan或者wi-fi p2p等方式建立投屏连接,投屏连接的建立具体可参考上文源端设备和目标设备建立通信连接的方式,在此不予赘述。为了方便描述,以下实施例以wi-fi p2p方式建立投屏连接。
125.在本技术的一些实施例中,如图8所示,笔记本电脑检测到用户选中消息卡片805之后,判断该消息卡片805对应的源端设备(也即,设备3)与目标设备(也即,笔记本电脑)的投屏通信通道(wi-fi p2p通道)是否已经被其他业务占用。其中,源端设备与目标设备通过
投屏通道建立投屏连接进行数据传输,从而实现两个或多个电子设备之间实现内容的镜像。当源端设备与目标设备已经建立了基于wi-fi p2p的其他业务,例如pc协同、设备分享等,那么源端设备与对端设备对应的投屏通道就被占用,导致源端设备无法基于wi-fi p2p向目标设备进行投屏。
126.例如,如图8所示,笔记本电脑确定与设备3之间的投屏通道(wi-fi p2p)被占用,启动投屏失败,显示提醒信息802,也即第二提醒信息,该提醒信息802示例性的提示用户“投屏连接冲突,请断开与其他设备之间的连接后再试”,以此提示用户前往源端设备(设备3)或目标设备(笔记本电脑)断开与其他设备之间的投屏连接。其中,提醒信息802可以以悬浮窗或者卡片的形式显示在笔记本电脑上,本技术实施例对提醒信息的显示形式不作限定。
127.再次,在本技术的一些实施例中,如图8所示,在笔记本电脑检测到用户选中消息卡片805之后,判断该消息卡片对应的源端设备(也即,设备3)的网络状态是否满足投屏要求。其中,网络状态包括流表项匹配状态、数据包执行端口负载状态、丢失/转发/收到数据包的总数量或数据包ttr失效等类似情况,只要是网络中可能出现的任何网络状态都包括在内,在此不作限定。可以理解,网络状态会影响投屏的服务质量,笔记本电脑可选的存在满足投屏条件的最低网络状态阈值。如果笔记本电脑确定当前网络状态低于这一最低网络状态阈值,则认为当前网络状态无法满足投屏要求,导致投屏失败。
128.如图8所示,在笔记本电脑确定当前网络状态不满足投屏要求,启动投屏失败,提醒信息803,又称为第三提醒信息。该提醒信息803可以提醒用户待网络稳定后再尝试触发源端设备进行投屏。示例性的提示用户“网络不稳定,请重试”,以此提示用户调整和优化网络状态。
129.可以理解的是,以上三种场景仅作为示例,不作为对本技术实施例的限定。笔记本电脑判断对应应用程序是否被应用锁保护、投屏通道是否被占用、网络状态是否满足投屏要求不作为本技术实施例必须具备的操作,同时判断顺序也不作限定。在一些实施例中,请参阅图9,图9为一种可能的判断机制的流程图。笔记本电脑响应于用户点击消息卡片的操作,在各个判断节点依次判断是否设置了应用锁、投屏通道是否被占用、网络状态是否满足投屏要求,示例性的,只要有一个判断结果触发上述启动投屏失败的场景,此轮判断终止。用户按照提示调整之后,可以再次点击消息卡片,触发新的一轮判断。当然,在一些实施例中,判断机制的判断顺序可以调整,并且可以在某一判断节点触发启动投屏失败之后,判断流程停留在该判断节点,并持续检测是否满足进入下一判断节点的条件。用户按照提示进行调整,当满足进入下一判断节点的条件之后,判断流程自动进入下一判断节点。
130.可以理解地,图9举例了笔记本电脑检测到用户选中消息卡片805之后,笔记本电脑可以先检验对应的应用程序是否受应用锁保护(可称为应用锁检测),再检验用于投屏的通信通道是否被占用(可称为通道检测),最后检验网络条件是否满足要求(简称网络检测)。实际上,本技术实施例中,不限定上述多项检测的先后顺序,也就是,在一些实施例中,笔记本电脑还可以先检验用于投屏的通信通道是否被占用,再检验对应的应用程序是否受应用锁保护,最后检测网络条件。
131.在其他可能的实施例中,笔记本电脑还可以同步进行应用锁检测、通道检测和网络检测,在得到的检测结果指示至少一项检测项目触发投屏失败时,显示对应的提醒信息。
例如,如果得到的测结果指示应用程序受应用锁保护、通信通道被占用,笔记本电脑会同步显示提醒信息801和提醒信息802。
132.另外,在桌面203显示消息卡片204时,如果笔记本电脑确定用户选中消息卡片204,那么笔记本电脑也需要针对手机进行应用锁检测、通道检测及网络检测。在检测结果指示上述检测项目均未触发投屏失败的情况下,笔记本电脑确定手机已具备投屏的条件,这样,笔记本电脑可以显示投屏窗口601,该投屏窗口601与手机相对应。在投屏失败的情况下,笔记本电脑可以显示对应的提醒信息。
133.在另一些实施例中,源端设备可以启用分布式认证功能,保障已锁屏或息屏的源端设备的隐私性。也就是,在源端设备(如,手机)启用分布式认证功能,且配置有解锁密码的情况下,如果目标设备(笔记本电脑)经过前述几项检测(如,应用锁检测、通信通道检测及网络检测),确定源端设备已具备投屏的条件,那么目标设备可以显示投屏窗口,此时的投屏窗口用于显示解锁验证界面。其中,上述解锁密码可以是用于解除手机锁屏状态的认证密码。
134.例如,图10所示,笔记本电脑检测到用户选中消息卡片204之后,如果确定手机已具备投屏条件,笔记本电脑可以显示投屏窗口601。上述投屏窗口601可以先显示解锁验证界面。这样,在笔记本电脑接收到用户输入的手机解锁密码,且解锁密码验证通过之后,控制投屏窗口601切换显示“提示等待的信息”。在显示“提示等待的信息”期间,手机响应于笔记本电脑的指示,启动社交应用,并在虚拟界面中绘制社交应用的应用界面,得到虚拟界面中各个显示对象的绘制参数。其中,上述虚拟界面是面向笔记本电脑的服务,其在手机的显示屏上不可见。上述绘制参数是用于渲染界面的相关参数,在一些示例中也可以称为显示信息。
135.在手机完成上述应用界面的绘制之后,将对应的显示信息发送给笔记本电脑,指示笔记本电脑在投屏窗口601中渲染上述应用界面,这样,上述投屏窗口601切换显示社交应用的应用界面(如,包含消息卡片204对应的应用消息的应用界面),也即,手机将虚拟界面投屏到笔记本电脑的投屏窗口601中。也就是,在笔记本电脑接收到用户输入的手机解锁密码,且解锁密码验证通过之后,手机开始向笔记本电脑进行同源投屏。
136.请参考图11,图11为分布式认证的流程示例图。作为一种实现方式,在源端设备首次向目标设备投屏的场景下,如果源端设备未设置解锁密码,目标设备无需在投屏窗口中显示解锁验证界面,而是指示源端设备直接进行同源投屏。在此场景下,目标设备可以直接显示“提示等待的信息”。待源端设备将需投屏的应用界面绘制完成之后,目标设备再控制上述投屏窗口显示该需投屏的应用界面。
137.在源端设备首次向目标设备投屏的场景下,如果源端设备设置了解锁密码,也就是说,用户直接使用源端设备之前,也需要进行密码认证。这种情况下,目标设备确定源端设备具备投屏的条件之后,可以触发分布式认证。关于分布式认证的描述可参考上文,在此不再赘述。
138.另外,需要说明的是,源端设备首次向目标设备进行同源投屏,且设置了解锁密码,那么无论源端设备处于锁屏息屏状态还是解锁状态,当在目标设备指示源端设备进行同源投屏时都会触发分布式认证机制。
139.需要说明的是,源端设备首次在目标设备上启动投屏,可以指的是源端设备在同
一目标设备上第一次启动同源投屏,也可以指的是在目标设备开机至当次关机的使用期间内第一次启动同源投屏。第二种解释具体来说,假设目标设备第一次开机,使用一段时间后目标设备第一次关机,第一次开机至第一次关机为第一使用期间。目标设备第二次开机,使用一段时间后目标设备第二次关机,第二次开机至第二次关机为第二使用期间。在第一使用期间,源端设备第一次在目标设备上启动同源投屏属于第二种解释中所指的“首次”启动;在第二使用期间,源端设备第一次在目标设备上启动同源投屏也属于第二种解释中所指的“首次”启动。
140.作为一种实现方式,在源端设备非首次向目标设备投屏的场景下,也即,源端设备在同一目标设备上曾经启动过同源投屏的场景下,又或者是,在目标设备开机至当次关机的使用期间内,源端设备在目标设备上启动过同源投屏。
141.第二种解释具体来说,在第一使用期间,源端设备第一次在目标设备上启动同源投屏,待源端设备第二次在目标设备上启动同源投屏,此时目标设备将判定源端设备在目标设备上启动过同源投屏;此后的第三次、第四次等亦如此。在第二使用期间,源端设备第一次在目标设备上启动同源投屏,由上文可知,此时目标设备将判定源端设备首次在目标设备上启动同源投屏;待源端设备第二次在目标设备上启动同源投屏,此时目标设备将判定源端设备在目标设备上启动过同源投屏;此后的第三次、第四次等亦如此。如果源端设备在目标设备上启动过同源投屏,为了在保障用户隐私安全的前提下,减少用户输入密码的次数,可选的,目标设备可以先判断距离上次通过分布式认证的时间是否超过预设时长阈值。
142.示例性地,距离上次通过分布式认证的时间没有超过预设时长阈值时,可以不用重新进行安全认证。需要说明的是,预设时长阈值可以是默认值,也可以是用户自行设置的值,它表明在这个时间范围内,源端设备和目标设备之间的投屏连接仍满足保护用户隐私安全的需求。所以当目标设备确定距离上次通过分布式认证的时间没有超过预设时长阈值时则直接启动投屏,无需显示解锁验证界面,这样能够避免反复要求用户输入密码导致操作繁琐,在保障用户隐私安全的同时提高用户使用同源投屏的便捷性。
143.又示例性地,距离上次通过安全认证的时间超过预设时长阈值时,需要重新进行分布式认证。可以理解地,当目标设备确定距离上次通过分布式认证的时间超过预设时长阈值时,则认为此时源端设备和目标设备之间的投屏连接已经不满足保护用户隐私安全的需求,这种情况下的分布式认证流程与上文中“源端设备首次在目标设备上启动同源投屏”的分布式认证流程相同,在此不再赘述。
144.示例性的,假设源端设备处于锁屏息屏状态并设置了解锁密码,此前未在目标设备上启动过同源投屏。在目标设备确定用户指示源端设备进行投屏,且确定源端设备具备投屏条件时,可以触发分布式认证机制,通过分布式认证后,成功启动第一次同源投屏;在t1时间第一次同源投屏结束;假设用户所设的预设时长阈值为1小时,在t2时间目标设备再次检测到用户指示同一源端设备进行同源投屏;目标设备确定源端设备在目标设备上启动过同源投屏,进而判断t2距离t1的时间是否大于1小时;目标设备确定(t2-t1)的值小于1小时,直接启动第二次同源投屏。
145.下面结合图12介绍本技术实施例提供的一种电子设备的软件结构。
146.分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过
activity上层时,原top activity调用onpause暂停窗口以使原top activity从前台切换到后台显示,对于新的窗口可以使用类似的原理管理生命周期。
162.ims可以用于对原始输入事件进行翻译、封装等处理,得到包含更多信息的输入事件,并发送到wms,wms中存储有每个应用程序的可点击区域(比如控件)、焦点窗口的位置信息等。因此,wms可以正确的将输入事件分发到指定的控件或者焦点窗口。ims可以对接收到的输入事件做出响应。如图12所示,ims接收到用户的输入事件,将输入事件转发给wms,wms分发给相应的应用,应用向ams发送注册请求,应用启动。
163.多屏框架模块负责实现同源投屏逻辑,调用pendingintetrecord接口启动pendingintet对应的acvtivity(指定行为send),添加同源投屏标签(如,flag2)。其中,pendingintent是android提供的一种用于外部程序调起自身程序的能力,生命周期不与主程序相关,当满足某些条件或触发某些事件后执行指定的行为。多屏框架模块还用于监听感应事件并与投屏助手进行交互,比如,调用activityrecord监听activity是否onresume(应用在前台且可见)并将监听结果通知投屏助手;调用task监听virtualdisplay是否栈空并将监听结果通知投屏助手。另外,多屏框架模块还用于在用户点击最近任务卡片或者桌面图标时将投至外屏的应用切换回主屏。多屏框架模块还用于在源端设备锁屏状态下,去除安全图层。在一些实施例中,多屏框架模块还可以用于在投屏场景下,对手机的电源键作相关修改。
164.可理解,应用程序框架层还可以包括内容提供器,视图系统,电话管理器,资源管理器,通知管理器等(图12中未示出)。其具体含义可以参考相关技术文档,在此不展开说明。
165.(4)安卓运行时和系统库
166.安卓运行时负责系统的调度和管理。安卓运行时包括核心库和虚拟机。其中,核心库包含两部分:一部分是编程语言(例如,java语言)需要调用的功能函数,另一部分是系统的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的编程文件(例如,java文件)执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
167.系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:opengl es),二维图形引擎(例如:sgl)等。表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了二维(2-dimensional,2d)和三维(3-dimensional,3d)图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。三维图形处理库用于实现3d图形绘图,图像渲染,合成,和图层处理等。2d图形引擎是2d绘图的绘图引擎。
168.(5)驱动层
169.驱动层是android操作系统的基础,android操作系统最终的功能都是通过驱动层完成。如图12所示,驱动层包括底层驱动,负责发现、认证、连接等工作,比如,驱动层接收应用框架层中通信模块下发的命令,执行连接、断开等动作。具体而言,驱动层包括设备发现模块、设备认证模块、设备连接模块。设备发现模块负责设备发现,设备认证模块负责设备鉴权,设备连接模块负责设备连接,可建立wifi、wi-fi p2p、蓝牙等传输通道。当然,驱动层
还可以包括硬件驱动比如显示屏驱动、摄像头驱动、音频驱动、传感器驱动、虚拟卡驱动等。
170.需要说明的是,本技术提供的图12所示的电子设备的软件结构示意图仅作为一种示例,并不限定android操作系统不同分层中的具体模块划分,具体可以参考常规技术中对android操作系统软件结构的介绍。另外,本技术提供的启动投屏的方法和装置还可以基于其他操作系统实现,本技术不再一一举例。
171.在一些实施例中,如图12的右半部分所示,目标设备的软件框架可以包括应用程序层、能力服务层、操作系统、驱动层。目标设备的部分功能模块以及功能模块的作用可以参照上述源端设备,此处不再赘述。
172.具体来说,目标设备的应用程序层参考上述源端设备。
173.目标设备的能力服务层包括消息中心、虚拟化服务模块、投屏服务模块、设备发现认证连接模块。其中,消息中心用于与源端设备的消息及信令进行交互,包括通知服务模块。通知服务模块用于接收从源端设备流转过来的消息通知,并负责向源端设备发起会话指令(opensession)。同时,通知服务模块还用于在建立会话(session)后,下发启动投屏服务的指令。虚拟化服务模块、投屏服务模块、设备发现认证连接模块参考上述源端设备,其中不同的是,目标设备的投屏服务模块用于接收并解析其他设备发送的视频流和相关信息,从而在本机显示在其他设备上运行的应用。
174.目标设备的操作系统可以是windows os(如个人计算机),也可以是android os(如平板电脑)。
175.目标设备的驱动层请参考上述源端设备。
176.基于图12所示的电子设备的软件结构,以手机为源端设备、笔记本电脑为目标设备举例,结合图13至图16具体介绍本技术实施例提供的一种同源投屏方法的具体实现方式。
177.请参阅图13至图16,图13至图16为本技术实施例提供的一种同源投屏方法的时序图。可以理解的是,图13至图16是一组连续的时序图,表明了图12所示的各个功能模块之间的交互流程。
178.如图13至图16所示,手机(源端设备,又可称为第一设备)包括systemui模块、第一通信模块、投屏助手、第一虚拟化服务模块、第一投屏服务模块、第一安全认证模块、fwk;笔记本电脑(目标设备,又称为第二设备)包括消息中心、第二投屏模块、第二通信模块、第二安全认证模块。需要说明的是,图12所示的其他功能模块也参与了本技术实施例提供的一种同源投屏方法的具体实现过程,未在本时序图中示出。如图13所示,上述方法可以包括:
179.s101,在发现手机的情况,笔记本电脑的消息中心模块向第二通信模块发送通信连接请求1,该通信连接请求1携带手机的设备标识码。
180.在一些实施例中,目标设备可以通过近场通信的方式,发现周围存在的信任设备(也即,属于同一信任环的设备)。其中,发现手机的具体过程可参考相关技术,在此不再赘述。
181.在发现手机之后,消息中心模块可以向笔记本电脑的第二通信模块发送通信连接请求1。该通信连接请求1可以是进程间通信(inter-process communication,ipc)消息,该通信连接请求1中可以携带手机的设备名称、设备标识码、mac地址,用于指示第二通信模块与手机的通信模块(也即,第一通信模块)建立通信连接。
182.s102,第二通信模块和第一通信模块之间建立第一通信连接。
183.示例性的,第一通信连接可以是基于近场通信方式建立的通信连接,用于实现笔记本电脑与手机之间的数据共享,例如,将手机接收到的消息通知,流转到笔记本电脑上,实现通知协同。
184.s103,在第一通信连接创建之后,第二通信模块向消息中心模块发送连接成功通知1。
185.在一些实施例中,在第一通信连接创建成功之后,手机和笔记本电脑之间可以通过第一通信连接实现数据的共享,所共享的数据可以包括应用消息。
186.s104,手机中的应用接收到一条应用消息。
187.在一些实施例中,手机中的应用可以是应用层中安装的任意应用,也即,可以是系统原生应用,也可以是第三方应用。上述应用消息(第一消息)可以来自应用程序(第一应用)对应的消息推送服务器。比如,图2中所示的应用消息“你今天还跑步吗”是来自社交应用的消息推送服务器,该应用消息可以携带有社交应用的应用标识(如,应用包名)。
188.s105,应用向systemui模块发送上述应用消息,其中,应用消息包含消息内容和对应的应用包名1。
189.如图2所示,社交应用接收到一条应用消息,也即,联系人小明发送的“你今天还跑步吗”,那么社交应用将该应用消息“今天还跑步吗”发送给systemui模块,这样,systemui模块可以得到一条应用消息,该应用消息携带的消息内容为“今天还跑步吗”,携带的应用包名1为“社交”。手机中应用层其他应用程序接收到对应的应用消息,同样,可以将其转发给systemui模块。
190.s106,systemui模块向第一通信模块发送上述应用消息。
191.在一些实施例中,systemui模块向第一通信模块转发接收到的应用消息,指示第一通信模块向信任环中其他设备发送该应用消息,比如,同一信任环中的笔记本电脑。在信任环中具有多台信任设备时,可以依次向多台信任设备的第一通信模块发送上述应用消息。
192.s107,第一通信模块向第二通信模块发送应用消息。
193.在一些实施例中,第一通信模块可以通过第一通信连接,向第二通信模块发送应用消息,实现将该应用消息流转到笔记本电脑。
194.s108,第二通信模块向消息中心模块发送应用消息。
195.在一些实施例中,上述s106~s108是systemui模块基于第一通信连接向消息中心模块发送应用消息的信令交互步骤。
196.s109,消息中心模块控制对应的显示器显示应用消息对应的消息通知控件。
197.其中,消息中心模块对应的显示屏也即笔记本电脑的显示器。在一些实施例中,可以通过显示消息通知控件(第一控件)的方式,显示来自手机的应用消息。例如,上述消息通知控件可以是图2中的消息卡片204。
198.也就是,在手机处于解锁且亮屏的状态时,如图2所示的场景,手机和笔记本电脑都可以显示手机的社交应用接收到的应用消息。在手机处于息屏或锁屏状态时,如图4a和图4b所示,笔记本电脑可以显示手机的社交应用接收到的应用消息。
199.这样,即使手机不在用户身边,用户也可以通过笔记本电脑或其他设备查看到该
应用消息,实现通知协同,减少出现消息查看不及时的问题。
200.如前述实施例中所示,笔记本电脑通过消息通知卡片在笔记本电脑的桌面显示来自手机的应用消息期间,如,图4a、图4b显示消息卡片204期间,再如,图7的信息列表窗口701期间,该消息通知控件所处的显示区域可以感知用户的操作,如点触操作或光标的输入操作等。在一些示例中,用户对上述消息通知控件的操作,可以触发笔记本电脑指示手机进行同源投屏。
201.示例性地,在手机处于锁屏或息屏状态的场景下,如图14所示,上述方法还可以包括:
202.s201,消息中心模块接收用户针对消息通知控件的第一操作。
203.在一些实施例中,上述第一操作可以是用户选中消息通知控件的操作。比如,点击该消息通知控件的操作,也就是,在消息中心模块检测到用户在消息通知控件所占用的显示区域中作出点触操作,消息中心模块确定接收到第一操作。再比如,笔记本电脑的光标移动到消息通知控件所占用的显示区域时,接收到鼠标输入的确定指令,消息中心模块确定接收到第一操作。
204.s202,消息中心模块向第二通信模块发送通信连接请求2,携带蓝牙通道标识和手机的设备标识码。
205.示例性地,上述通信连接请求2可以是opensession指令,该opensession指令中携带蓝牙通道标识和手机的设备标识码。也就是,消息中心模块可以向第二通信模块发送opensession指令,指示第二通信模块创建连接手机的蓝牙通信通道,如称为第二通信连接。
206.s203,第二通信模块与第一通信模块建立第二通信连接。
207.在一些实施例中,第二通信模块可以响应于opensession指令,创建连接手机的第一通信模块的第二通信连接,该第二通信连接可以用于传输分布式认证过程中涉及的信令。
208.另外,创建第二通信连接过程中,第二通信模块与第一通信模块之间信令的交互过程可参考相关技术,在此不再赘述。
209.s204,第一通信模块向投屏助手模块发送启动指令。
210.可以理解的,第一通信模块还可以与手机内部其他软件模块进行进程间数据的传递。在手机无需投屏的场景下,投屏助手模块处于休眠状态,不占用手机的系统资源。在笔记本电脑指示创建第二通信连接时,意味着笔记本电脑向手机发起执行投屏的邀请,在此场景下,第一通信模块可以指示启动投屏助手模块,也即,通过发送启动指令的方式,唤醒投屏助手模块,并启动投屏助手模块对应的服务,该服务用于提供投屏助手模块所具备的功能。
211.s205,启动投屏助手模块。
212.在一些实施例中,启动投屏助手模块之后,创建该投屏助手模块对应的服务,上述服务可以监听与笔记本电脑之间的组网状态,也即,第二通信连接是否建立成功。在监听到的组网成功的情况,投屏助手对应的服务可以指示第二通信模块将组网成功的通知(或者称为连接成功通知2),通过第二通信连接传递给笔记本电脑的消息中心模块。
213.s206,第二通信模块向消息中心模块转发连接成功通知2,指示第二通信连接已建
立。
214.s207,消息中心模块向第二投屏服务模块发送启动指令。
215.其中,上述启动指令用于指示运行第二投屏服务模块,启用该第二投屏服务模块对应的服务。
216.在一些实施例中,在s207之前,消息中心模块还可以基于第二通信模块与第一通信模块之间的第二通信连接,与投屏助手模块协商通信参数,比如,可以协商服务集标识(service set identifier,ssid),具体过程可参考相关技术,在此不再赘述。
217.s208,第二投屏服务模块启动对应服务。
218.s209,第二投屏服务模块向消息中心模块发送启动成功通知1。
219.其中,上述启动成功通知1,用于通知消息中心模块,第二投屏服务模块已进入允许状态,可以提供相应的服务。
220.在一些实施例中,如图10所示,用户选中笔记本电脑上显示的消息卡片之后,笔记本电脑和手机之间还可以进行分布式认证。下面结合图15,介绍分布式认证的实现细节,示例性地,上述方法还包括:
221.s301,消息中心模块向第二安全认证模块发送分布式认证请求。由上文可知,由于手机处于锁屏息屏状态,为保障用户隐私安全,上述启动投屏服务请求可以触发分布式认证机制。由于本技术实施例是笔记本电脑指示启动投屏服务,所以启动投屏服务请求由笔记本电脑发起,也就是,笔记本电脑还可以触发分布式认证机制,当然,分布式认证过程中,密码认证实际由手机执行,所以笔记本电脑的安全认证模块需要把笔记本电脑接收到的认证信息发往手机的安全认证模块,由手机的安全认证模块执行密码认证。
222.s302,第二安全认证模块控制显示屏显示分布式认证窗口。
223.在一些实施例中,上述显示屏是指笔记本电脑的显示屏。上述消息中心向笔记本电脑的第二安全认证模块发起分布式认证请求,触发第二安全认证模块调用视图接口,通过该视图接口,在笔记本电脑的桌面上显示分布式认证窗口(也即,显示有解锁验证界面的投屏窗口,可称为第二窗口),通过显示分布式认证窗口引导用户输入手机对应的密码信息(又可称为解锁密码)。
224.s303,在显示分布式认证窗口期间,第二安全认证模块接收用户输入的密码信息。
225.示例性地,上述密码信息可以是显示分布式认证窗口期间,录入的指纹信息。又示例性地,上述密码信息还可以是显示分布式认证窗口期间,采集到的语音认证信息等。当然,上述密码信息还可以是用户输入的字符密钥等,本技术实施例对此不作具体限定。
226.s304,第二安全认证模块向第二通信模块发送上述密码信息。
227.s305,第二通信模块通过第二通信连接,向第一通信模块发送上述密码信息。
228.s306,第一通信模块向第一安全认证模块发送密码信息。
229.这样,通过上述s304~s306,笔记本电脑的第二安全认证模块可以将接收到的密码信息传递给手机的第一安全认证模块,又可以称为第二安全认证模块基于第二通信连接向手机的第一安全认证模块发送接收到的密码信息。在第一安全认证模块接收到笔记本电脑采集的密码信息之后,第一安全认证模块可以将其与用户在手机设置的解锁密码进行比对,如果笔记本电脑采集的密码信息与手机设置的密码匹配,则认证成功,否则认证失败。
230.在一些实施例中,在认证失败的场景下,手机可以通知笔记本电脑密码认证失败,
可选的,笔记本电脑确定密码认证失败之后,可在分布式认证窗口中提示用户密码错误,引导用户重新输入密码信息,并再次请求手机进行密码验证。当然,在认证失败的次数超过密码错误次数阈值则挂起认证,密码错误次数阈值可以为用户自行设置或者默认值。在认证成功的场景下,流程可以进入s307。
231.s307,第一安全认证模块确定密码信息通过认证。
232.s308,第一安全认证模块向第一通信模块发送认证成功通知。
233.其中,该认证成功通知用于指示上述密码信息通过认证。认证成功通知又称为第一响应信息。
234.s309,第一通信模块通过第二通信连接,向第二通信模块发送认证成功通知。
235.s310,第二通信模块向第二安全认证模块发送认证成功通知。
236.s311,第二安全认证模块向消息中心模块发送认证成功通知。
237.其中,上述s308~s311又可称为第一安全认证模块基于第二通信连接,向第二安全认证模块发送认证成功通知。
238.s312,消息中心模块控制显示器显示过渡加载窗口。
239.可以理解的是,分布式认证成功的场景下,笔记本电脑可以指示手机进行同源投屏,然而,从指示投屏到投屏成功之间存在一定的时间间隔,所以在笔记本电脑显示分布式认证窗口与切换显示包含应用界面的投屏窗口之间,存在一定的时间跨度。可选的,为了提高用户观感和体验,可以在安全认证成功后,启动过渡加载窗口,如图10中,显示有“提示等待的信息”的投屏窗口,该过渡加载窗口可提示用户已通过分布式认证,正在启动同源投屏。
240.在一些实施例中,经过分布式认证之后,手机可以正式向笔记本电脑进行同源投屏。在另一些实施例中,在确定用户选中消息通知控件(如,消息卡片204)之后,也可以跳过分布式认证,直接指示手机进行同源投屏。示例性地,不执行分布式认证的场景可以是手机未配置解锁密码的场景。又示例性地,不执行分布式认证的场景还可以是距离上一次手机反馈分布式认证成功的时间(第一时间点)未超过预设时长阈值(第一阈值)。
241.下面结合图16、图17进行描述同源投屏的过程:
242.s401,消息中心模块向第二通信模块发送通信连接请求3,携带wi-fi p2p通道标识和手机的设备标识码。
243.示例性地,上述通信连接请求3可以是opensession指令,该opensession指令中携带wi-fi p2p通道标识和手机的设备标识码,用于指示第二通信模块创建与手机之间的wi-fi p2p通信通道,如称为第三通信连接。
244.另外,上述笔记本电脑和手机之间所建立第一通信连接、第二通信连接、第三通信连接的类型不限于蓝牙和wi-fi p2p,也可以是其他类型的连接方式,只要能满足两者之间传输数据的要求即可。可以理解地,前述实施例中提到的蓝牙和wi-fi p2p仅为示例,如果创建其他类型的通信连接时,对应的通信连接请求中携带对应的业务通道名称即可,类似于前述实施例中,通信连接请求2中携带蓝牙通道标识,通信连接请求3中携带wi-fi p2p通道标识。
245.s402,第二通信模块与第一通信模块建立第三通信连接。
246.在一些实施例中,第二通信模块可以响应于上述通信连接请求3,创建连接第一通
信模块的第三通信连接,该第三通信连接可以用于传输同源投屏过程中涉及的信令。
247.另外,创建第三通信连接期间,第二通信模块与第一通信模块之间信令的交互过程可参考相关技术,在此不再赘述。
248.s403,在第三通信连接创建之后,第二通信模块向消息中心模块发送连接成功通知3。
249.其中,上述连接成功通知3,用于通知第三通信连接已创建。
250.s404,基于第三通信连接,消息中心与投屏助手进行参数协商,确定会话密钥和手机的ip地址。
251.在一些实施例中,参数协商包括业务侧(笔记本电脑)协商sessionkey并获取对端设备(手机)的ip地址。其中,sessionkey也称为数据加密密钥或者工作密钥,是保证用户跟其它计算机或者两台计算机之间安全通信会话而随机产生的加密和解密密钥,它可由通信用户之间进行协商得到。它一般是动态地、仅在需要进行会话数据加密时产生。
252.另外,上述s404包括消息中心模块向第二通信模块发送消息,第二通信模块再通过第三通信连接将该消息传输给第一通信模块,第一通信模块再向投屏助手模块发送该消息。为了方便描述,以下“基于第三通信连接”均包含第一通信模块和第二通信模块之间的数据传输过程,下文不再赘述。
253.s405,消息中心向第二投屏服务模块发送会话密钥和手机的ip地址。
254.s406,第二投屏服务模块根据会话密钥和手机的ip地址进行初始化。
255.具体的实现过程可参考相关技术,在此不再赘述。
256.s407,第二投屏服务模块向消息中心模块返回指示初始化已完成的消息。
257.由上文可知,上述投屏服务模块提供投屏能力和反向事件控制基础能力。示例性地,笔记本电脑的第二投屏服务初始化成功后,为接收并解析手机端发送的相关信息提供能力支撑,以实现在笔记本电脑显示在手机中运行的应用。同时反向事件控制基础能力为实现同源投屏提供支撑。所以在进行同源投屏服务之前需要投屏服务模块进行初始化,以保证正常提供投屏能力和反向事件控制基础能力。
258.s408,消息中心模块向第二投屏服务模块发送指示启动投屏服务的消息。
259.s409,基于第三通信连接,第二投屏服务模块向投屏助手模块发送指示启动投屏服务的消息。
260.需要说明的是,上述步骤s409包括第二投屏服务模块向第二通信模块发送消息,第二通信模块再通过第三通信连接将该消息传输给第一通信模块,第一通信模块再向投屏助手模块发送该消息。为了方便描述,以下“基于第三通信连接”均包含第一通信模块和第二通信模块之间的数据传输过程,下文不再赘述。
261.s410,投屏助手模块绑定投屏服务。
262.可理解,投屏助手模块中的投屏管理模块绑定相关的投屏服务以管理投屏事务。
263.s411,投屏助手模块向第一虚拟化服务模块发送指示初始化的消息。
264.可理解,投屏助手模块中的虚拟化服务初始化模块用于指示虚拟化服务模块进行初始化。
265.s412,第一虚拟化服务模块完成初始化。
266.第一虚拟化服务模块负责投屏服务中的音视频虚拟化,手机的第一虚拟化服务模
块与笔记本电脑的第二虚拟化服务模块(图12中未示出)交互可以实现在投屏过程中,被投屏到笔记本电脑上的手机应用可以使用笔记本电脑的speaker、mic、camera,并在手机和笔记本电脑之间传输所产生的音频、视频数据码流,以此实现投屏时接打音视频电话等功能。
267.s413,第一虚拟化服务模块向第一投屏服务模块发送指示启动投屏服务的消息。
268.s414,第一投屏服务模块启动。
269.s415,第一投屏服务模块创建虚拟显示器,并为其添加虚拟显示标志。
270.需要说明的是,投屏服务模块是实现同源投屏方式的重要功能模块。具体的实现方式是手机的第一投屏服务模块在创建虚拟显示区域(virtualdispaly,又可称为第一显示区域)时添加flag1:virtual_display_flag_presentation(虚拟显示标志,如称为第二标签),用于实现笔记本电脑上的投屏窗口镜像手机显示屏所显示的内容。
271.这样可以实现在手机锁屏或者息屏状态下,手机显示黑屏或锁屏界面,笔记本电脑的投屏窗口不会显示黑屏或锁屏界面。同时,投屏服务模块提供的反向事件控制基础能力能够实现在笔记本电脑反向控制手机。当然,同源投屏方式的实现还需要笔记本电脑的第二投屏服务模块与手机的第一投屏服务模块配合交互,图16和图17未示出。
272.s416,第一投屏服务模块向投屏助手模块发送启动成功通知2,指示第一投屏服务模块已启动。
273.s417,基于第三通信连接,第一投屏助手向消息中心模块发送启动成功通知2。
274.s418,基于第三通信连接,消息中心模块向手机的fwk发送同源投屏请求,携带应用包名1。
275.在一些实施例中,上述同源投屏请求为第一请求,上述应用包名1是用户选中的消息通知控件所对应的应用包名(也即,应用标识)。比如,图4a和图4b所示,用户选中消息卡片204时,由于消息卡片204显示来自手机中社交应用的应用消息,这样,对应的应用包名1为“社交应用”。
276.s419,fwk启动同源投屏窗口。
277.需要说明的是,在手机锁屏或者息屏的状态下,为了能够保证笔记本电脑上的同源投屏窗口能够正常显示应用界面,需要fwk控制同源投屏窗口的可见性、不休眠和可操作性(对应的activity不休眠、可见等)。可理解,fwk具体的实现过程涉及到fwk的内嵌类之间的功能交互,交互流程请参见下文,此处不予赘述。
278.s420,fwk向第一投屏服务模块发送同源投屏窗口的显示数据。
279.s421,基于第三通信连接,第一投屏服务模块向第二投屏服务模块发送上述显示数据。
280.s422,第二投屏服务模块控制对应的显示器,将上述显示数据渲染到投屏窗口。
281.其中,第二投屏服务模块控制对应的显示器,是指笔记本电脑的显示屏。
282.s423,第二投屏服务模块向消息中心发送投屏启动成功通知。
283.s424,消息中心模块控制对应的显示器取消显示过渡加载窗口。
284.其中,上述消息中心模块对应的显示器是指笔记本电脑的显示屏。
285.s425,消息中心模块控制对应的显示屏显示同源投屏窗口。
286.至此,笔记本电脑显示应用消息所对应的同源投屏窗口(第一窗口),在手机处于锁屏息屏状态下投屏成功。也就是,如图10所示,笔记本电脑的投屏窗口601中,由显示“提
示等待的信息”的界面切换为显示社交应用的应用界面。
287.在一些实施例中,手机和笔记本电脑之间不进行分布式认证的情况下,本技术实施例提供的方法,可以不含图14和图15所示的步骤。在此场景下,笔记本电脑的消息中心模块接收用户针对消息通知控件的第一操作之后,触发与手机建立第三通信连接,并启动笔记本电脑的投屏助手。在手机和笔记本电脑之间完成会话密钥和ip地址协商之后,触发笔记本电脑也启动投屏服务模块。
288.下面结合图18、图19和图20说明前述实施例中fwk实现应用的启动和同源投屏窗口外屏显示的具体实现过程。
289.相关技术中,由于手机处于锁屏或者息屏的状态时,应用消息对应的activity会进入休眠状态,其生命周期会从onresume状态(用户可见且可与用户交互)走到onpause状态(非活动状态),所以投屏至笔记本电脑时无法正常显示应用界面。为了实现应用投屏,需要保证应用的activity跳过休眠状态,并且当前执行的activity保持在onresume状态,以保证应用对应的投屏窗口的可见性。
290.请参阅图18、图19和图20,图18、图19和图20为图17中步骤s419的具体实现过程。如图18、图19和图20所示,fwk内部还包括systemserver、powermanager service、pendingintentrecord、activitystarter、窗口管理模块(windowmanagerex)、activitytaskmanagerserviceex、activitytasksupervisor、锁屏控制器(keyguardcontroller)、activityrecord、task、rootwindowscontainer、surfaceflinger等内嵌类。
291.s501,systemui模块向systemserver发送锁屏处理请求。
292.在一些实施例中,上述s418可以是消息中心模块向systemui模块发送同源投屏请求。在一些实施例中,该同源投屏请求中含有指示同源投屏的标识,这样,systemui模块识别到该标识之后,向systemserver发送锁屏处理请求。在另一些实施例中,该同源投屏请求中不含指示同源投屏的标识,systemui模块响应于同源投屏请求,检测virtualdisplay中标记有flag1(也即,virtual_display_flag_presentation),在virtualdisplay中标记有flag1的情况下,向systemserver发送锁屏处理请求。
293.s502,systemserver响应于锁屏处理请求,指示powermanager service变更虚拟界面的休眠状态。
294.其中,上述systemserver可以启动手机系统中所需要的各类service,比如,powermanager service。powermanager service负责手机系统的电源管理,常见的功能有:点亮屏幕、熄灭屏幕、进入屏保等,powermanagerservice继承自systemservice,由systemserver启动、注册到系统服务中,通过binder和其他组件进行交互。
295.可以理解地,上述虚拟界面也即virtualdisplay,是手机中不可见的显示区域,该virtualdisplay向笔记本电脑提供服务,笔记本电脑的投屏窗口中的显示内容来自于virtualdisplay中绘制的显示内容。在同源投屏的场景下,虚拟界面需要镜像手机的显示屏。手机处于息屏状态时,手机的显示屏已进入休眠,对应地,虚拟界面也会处于休眠状态。为了实现息屏下的同源投屏,手机需要控制虚拟界面跳过休眠。在一些实施例中,手机可以调用powermanager service对虚拟界面进行管理,解除虚拟界面的休眠状态。
296.s503,powermanager service控制虚拟界面保持非休眠状态。
297.这样,即使手机的显示屏休眠,手机中的virtualdisplay也不会休眠,确保virtualdisplay可以在笔记本电脑上投影出可见且可操作的投屏窗口。
298.s504,powermanager service指示窗口管理模块取消针对虚拟界面的锁屏策略。
299.s505,窗口管理模块取消针对虚拟界面的锁屏策略。
300.上述锁屏策略可以是超时锁屏,在取消针对虚拟界面的锁屏策略之后,虚拟界面不会显示锁屏界面(也即,虚拟界面中不绘制锁屏图层),也不会被锁屏。确保虚拟界面投屏到笔记本电脑之后,显示的投屏窗口不休眠,也不会锁屏。
301.s506,systemui模块向pendingintentrecord发送应用包名1。
302.其中,该应用包名1来自同源投屏请求中携带的应用包名。应用包名1可以是手机中已安装的一个应用程序的名称。
303.s507,pendingintentrecord将应用包名1对应的所有activity标记同源投屏标签。
304.其中,应用包名1对应的所有activity是指应用包名1对应的应用程序的所有activity(也即,第一进程)。
305.需要说明的是,添加了同源投屏标签(第一标签)的activity才会被启用至外屏(笔记本的显示屏)进行同源投屏,步骤s507相当于一个activity过滤器,过滤出与应用包名相对应的应用的所有activity,从而把需要启动至外屏的应用的所有activity以同源投屏的方式显示。
306.其中,上述同源投屏标签可以是flag2:intent.java
‑‑‑
》flag_activity_pc_cast_notification=0x04000000。将需要启动至外屏的activity打上标记,使得activitystarter能够识别出需要启动至外屏的activity。
307.s508,pendingintentrecord指示activitystarter启动标有同源投屏标签的activity。
308.在一些实施例中,pendingintentrecord可以通过发送同源投屏指令的方式,指示activitystarter启动标有同源投屏标签的activity。当然,activitystarter不能单独完成启动标有同源投屏标签的activity,还需调用其他软件进程完成,这样,流程也就进入s509。
309.s509,activitystarter向activitytasksupervisor发送指示启动同源投屏的请求。
310.s510,activitytasksupervisor向keyguardcontroller发送指示置activity前台可见的消息。
311.需要说明的是,activitytasksupervisor通过调用keyguardcontroller监听activity是否处于前台可见状态,如果是的话则说明该activity所对应的应用投屏窗口启动至笔记本电脑之后,运行于笔记本电脑的前台且用户可见(onresume状态);如果activity处于停止状态(onpause状态),则说明该activity所对应的应用投屏窗口启动至笔记本电脑之后,处于后天运行,用户不能进行操作。其中,onresume状态和onpause状态为activity的生命周期中的两种状态。当activity处于onresume状态时,该activity处于可见且能够与用户交互的激活状态,用户可以获得activity的焦点;当activity处于onpause状态时,该activity被另一个透明或者dialog样式的activity覆盖,此时它依然与窗口管
理器保持连接,系统继续维护其内部状态,它仍然可见,但它已经失去了焦点,故不可与用户交互。在手机处于锁屏或息屏状态时,ams组件启动activity的流程中,会将activity的生命周期切换至onpause状态,导致activity不能与用户交互,所以投屏出现异常。
312.s511,keyguardcontroller识别出标有同源投屏标签的activity,将其置于前台可见状态。
313.keyguardcontroller为锁屏控制器,识别出标有同源投屏标签的activity并返回“ture”,以指示需要将该activity置于前台可见状态,保证在源端设备锁屏状态下,标有同源投屏标签的activity所对应的应用投屏窗口在目标设备上可见。
314.s512,keyguardcontroller向activityrecord发送指示保持activity前台可见的消息。
315.s513,activityrecord控制标有同源投屏标签的activity保持前台可见状态。
316.s514,activityrecord向task发送指示校验的消息,指示task校验位于任务栈栈顶的activity状态。
317.s515,task确定位于任务栈栈顶的activity处于前台可见状态。
318.需要说明的是,一个应用可能对应一个或多个activity,一个或多个activity会被存放在一个或多个任务栈中。任务栈遵循后进先出的规律,位于任务栈栈顶的activity最先被执行。为了保证即将被执行的activity对应的应用投屏窗口前台可见,需要保证栈顶的activity处于onresume状态。
319.可以理解的是,步骤s514和s515相当于容错机制,校验位于任务栈栈顶的activity是否处于onresume状态,所以该两个步骤为可选项,即在另一些实施例中,也可以不包括步骤s514和s515。
320.s516,task指示rootwindowscontainer将所有任务置于休眠状态。
321.s517,rootwindowscontainer遍历所有任务的activity,跳过标记同源投屏标签的activity,将其他activity置于休眠状态。
322.需要说明的是,除了标记同源投屏标签的activity跳过休眠流程,其他activity都会被置于休眠状态。因此,rootwindowscontainer需要遍历所有任务对应的activity,从中过滤出添加了同源投屏标签的activity并返回“false”,以指示该activity不进入休眠;其他activity则返回“true”,使其进入休眠流程。
323.示例性的,同一个任务栈中的activity1和activity2都被添加了同源投屏标记,rootwindowscontainer使activity1和activity2跳过休眠流程;而未添加同源投屏标记的activity3和activity4则被置于休眠状态。
324.当activity1位于任务栈栈顶时,task校验activity1的状态,保证其处于前台可见状态,进而activity1被同源投屏后在pc上对用户可见且在前台可被用户操作。
325.执行完activity1,此时未休眠的activity2递进到了任务栈栈顶,task校验activity2的状态,保证其处于前台可见状态,进而activity2被被同源投屏后在pc上对用户可见且在前台可被用户操作。其他被添加了同源投屏标记的activity的执行流程依此类推,此处不再赘述。而未被添加了同源投屏标记的activity会被rootwindowscontainer置于休眠状态,不会被启动至外屏显示。
326.s518,activitystarter向应用层发送应用启动指令,包含应用标识1。
327.其中,上述应用启动指令发送给手机的应用层,用于启动应用标识1所指示的应用程序。
328.可以理解的是,activitystarter在步骤s509中发送启动同源投屏的请求时,也会发送启动应用的请求,因为要实现应用进行同源投屏,前提是应用在手机端启动。所以步骤s518包括fwk与应用程序层的交互,即fwk中的activitystarter调起应用程序层的应用。
329.s519,应用层启动应用标识1指示的应用。
330.s520,应用层向activitytaskmanagerserviceex发送启动成功的消息。
331.s521,activitytaskmanagerserviceex向surfaceflinger发送指示启动图层合成的消息。
332.s522,surfaceflinger在虚拟显示区域上合成应用图层,得到对应的显示数据。
333.其中,surfaceflinger的作用是接收多个来源的图形显示数据,将他们合成,然后发送到显示设备。比如打开应用,常见的有三层显示,顶部的statusbar、底部或者侧面的导航栏以及应用的界面,每个图层是单独更新和渲染,这些界面都是由surfaceflinger合成为一个应用图层显示数据刷新到硬件显示。
334.上述应用图层可以包括当前执行的activity对应的应用界面。上述显示数据(第一数据)可以包括应用图层中不同的显示对象、显示对象在虚拟显示屏中的显示位置、大小等信息。
335.需要说明的是,虚拟显示区域为步骤s415所创建的标记flag1的虚拟显示区域。虚拟显示区域的内容对用户不可见,手机可将虚拟显示区域作为占用一定存储空间的画布使用。例如,请参阅图21a和图21b,图21a和图21b为合成应用图层的示意图。在执行应用1的activity1时,如图21a所示,surfaceflinger可在虚拟显示区域的区域1中实时合成对应的应用图层。在执行应用1的activity2时,如图21b所示,surfaceflinger可在虚拟显示区域的区域2中实时合成对应的应用图层。虚拟显示区域可占用存储空间1,虚拟显示区域中的区域1对应于存储空间1中的一段存储地址,虚拟显示区域中的区域2对应于存储空间1中的另一段存储地址,即虚拟显示区域可具有位置属性。
336.进而,在同源投屏场景中,则可将标记flag1的虚拟显示区域上合成的应用图层作为显示数据,输出至笔记本电脑,使得笔记本电脑在对应的同源投屏窗口中呈现上述显示数据。
337.s523,surfaceflinger向第一投屏服务模块发送显示数据。
338.在surfaceflinger向第一投屏服务模块发送显示数据之后,如图17所示,第一投屏服务模块会传递给第二投屏服务模块,也即,执行s422~s425所示的步骤。
339.在另一些实施例中,在s523之后,activitytaskmanagerserviceex还可以通过activitystarter发送投屏成功的通知,然后,activitystarter也利用第三通信连接,将该投屏成功的通知传递给笔记本电脑的消息中心模块。然后,执行s424和s425。
340.本技术实施例还提供一种电子设备,该电子设备可以包括:存储器和一个或多个处理器。该存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,可使得电子设备执行上述实施例中手机或笔记本电脑执行的各个步骤。当然,该电子设备包括但不限于上述存储器和一个或多个处理器。
341.本技术实施例还提供一种芯片系统,该芯片系统可以应用于前述实施例中的终端设备。如图22所示,该芯片系统包括至少一个处理器2201和至少一个接口电路2202。该处理器2201可以是上述电子设备中的处理器。处理器2201和接口电路2202可通过线路互联。该处理器2201可以通过接口电路2202从上述电子设备的存储器接收并执行计算机指令。当计算机指令被处理器2201执行时,可使得电子设备执行上述实施例中手机或笔记本电脑执行的各个步骤。当然,该芯片系统还可以包含其他分立器件,本技术实施例对此不作具体限定。
342.在一些实施例中,通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
343.在本技术实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
344.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
345.以上所述,仅为本技术实施例的具体实施方式,但本技术实施例的保护范围并不局限于此,任何在本技术实施例揭露的技术范围内的变化或替换,都应涵盖在本技术实施例的保护范围之内。因此,本技术实施例的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种同源投屏方法,其特征在于,应用于第一设备和第二设备,所述第一设备处于息屏状态或锁屏状态,所述方法包括:所述第一设备接收第一消息,其中,所述第一消息是所述第一应用的应用消息;所述第一设备向所述第二设备转发所述第一消息,所述第二设备显示第一控件,所述第一控件用于显示来自所述第一设备的第一消息;所述第二设备响应于用户对所述第一控件的操作,向所述第一设备发送第一请求;所述第一设备响应于所述第一请求,创建第一显示区域,所述第一显示区域是所述第一设备中不可见的显示区域;所述第一显示区域不休眠且不绘制锁屏图层;所述第一设备启动所述第一应用,所述第一应用包括第一进程,所述第一进程不休眠;所述第一设备在所述第一显示区域中绘制所述第一进程的应用界面之后,向所述第二设备发送第一数据;所述第二设备响应于所述第一数据,显示第一窗口,所述第一窗口中显示所述第一显示区域中绘制的显示内容。2.根据权利要求1所述的方法,其特征在于,所述第一请求中携带所述第一应用的应用标识,在所述第一设备启动第一应用之前,所述方法还包括:所述第一设备响应于所述第一请求,给所述第一应用的第一进程标记第一标签;在确定所述第一进程标记有所述第一标签的情况下,所述第一设备配置所述第一进程在生命周期中不休眠,以及配置所述第一进程的应用界面在生命周期中允许绘制于所述第一显示区域。3.根据权利要求1所述的方法,其特征在于,所述向所述第二设备发送第一数据之前,所述方法还包括:所述第一设备根据绘制于所述第一显示区域的应用界面,生成所述第一数据,所述第一数据包括所述应用界面对应的应用图层。4.根据权利要求1所述的方法,其特征在于,所述第二设备响应于用户对所述第一控件的操作,在所述向所述第一设备发送第一请求之前,所述方法还包括:所述第二设备显示第二窗口,所述第二窗口为分布式认证窗口;在显示所述第二窗口期间,所述第二设备接收用户输入的密码信息;所述第二设备向所述第一设备发送所述密码信息;在所述密码信息与所述第二设备中预置的解锁密钥匹配时,向所述第二设备发送第一响应信息,所述第一响应信息指示所述第二设备通过分布式认证。5.根据权利要求4所述的方法,其特征在于,在所述第二设备显示第二窗口之前,所述方法还包括:所述第二设备确定所述第一设备中已配置有所述解锁密钥。6.根据权利要求4或5所述的方法,其特征在于,在所述第二设备显示第二窗口之前,所述方法还包括:所述第二设备获取相邻上一次接收到所述第一响应信息的第一时间点;所述第二设备确定第一时间间隔大于第一阈值,所述第一时间间隔是所述第一时间点与当前系统时间之间的间隔。7.根据权利要求1所述的方法,其特征在于,在所述向所述第一设备发送第一请求之
前,所述方法还包括:所述第二设备确定所述第一设备中未配置解锁密钥,所述解锁密钥是解除所述第一设备锁屏状态的密钥。8.根据权利要求1所述的方法,其特征在于,在所述向所述第一设备发送第一请求之前,所述方法还包括:所述第二设备确定所述第一设备中已配置解锁密钥;所述第二设备获取第一时间点,所述第一时间点是相邻上一次接收到所述第一设备反馈的第一响应信息的系统时间,所述第一响应信息指示所述第二设备发出的密码信息与所述第一设备中内置的解锁密钥相匹配;所述第二设备确定第二时间间隔不大于第一阈值,所述第二时间间隔是所述第一时间点与当前系统时间之间的间隔。9.根据权利要求1所述的方法,其特征在于,在创建第一显示区域之后,所述方法还包括:所述第一设备给所述第一显示区域标记第二标签;在确定所述第一显示区域标记有所述第二标签之后,所述第一设备配置所述第一显示区域不休眠,以及配置不在所述第一显示区域上绘制锁屏图层。10.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述第二设备响应于用户指示查看消息列表的操作,显示第三窗口,所述第三窗口中包括第二控件,所述第二控件显示有来自第一设备的第二消息,所述第二消息是第二应用的应用消息;在所述第一设备中的第二应用启用了应用锁的情况下,所述第二设备响应于用户对所述第二控件的操作,显示第一提醒信息,所述第一提醒信息指示所述第二应用受应用锁保护,无法进行投屏。11.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述第二设备响应于用户指示查看消息列表的操作,显示第三窗口,所述第三窗口中包括第三控件,所述第三控件显示有来自第三设备的第三消息;在用于投屏的通信通道被占用的情况下,所述第二设备响应于用户对所述第三控件的操作,显示第二提醒信息,所述第二提醒信息指示当前存在网络连接冲突的问题。12.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述第二设备响应于用户指示查看消息列表的操作,显示第三窗口,所述第三窗口中包括第三控件,所述第三控件显示有来自第三设备的第三消息;在所述第二设备与所述第三设备之间网络质量不符合预设条件的情况下,所述第二设备响应于用户对所述第三控件的操作,显示第三提醒信息,所述第三提醒信息指示网络质量影响本次投屏。13.根据权利要求1所述的方法,其特征在于,在所述第二设备显示所述第一窗口期间,如果所述第一设备接收到用户指示解除锁屏或息屏状态的操作,所述第一设备继续保持锁屏或息屏状态。14.根据权利要求1所述的方法,其特征在于,在所述第二设备显示所述第一窗口之后,所述方法还包括:
所述第一设备响应于用户指示解除锁屏或息屏状态的操作,显示所述第一进程对应的应用界面。15.一种同源投屏方法,其特征在于,应用于第一设备,所述第一设备与所述第二设备通信连接,所述第一设备处于息屏状态或锁屏状态,所述方法包括:所述第一设备接收第一消息;所述第一设备向所述第二设备转发第一消息,指示所述第二设备显示第一控件,所述第一控件用于显示所述第一消息;所述第一设备响应于第一请求,创建第一显示区域,所述第一显示区域是所述第一设备中不可见的显示区域;所述第一显示区域不休眠且不绘制锁屏图层;其中,所述第一请求是所述第二设备响应于用户对所述第一控件的操作,向所述第一设备发送的请求;所述第一设备启动第一应用,其中,所述第一消息是所述第一应用的应用消息,所述第一应用包括第一进程,所述第一进程不休眠;所述第一设备在所述第一显示区域中绘制所述第一进程的应用界面之后,向所述第二设备发送第一数据,指示所述第二设备显示第一窗口,所述第一窗口中显示所述第一显示区域中绘制的显示内容。16.根据权利要求15所述的方法,其特征在于,所述第一请求中携带所述第一应用的应用标识,在所述第一设备启动第一应用之前,所述方法还包括:所述第一设备响应于所述第一请求,给所述第一应用的第一进程标记第一标签;在确定所述第一进程标记有所述第一标签的情况下,所述第一设备配置所述第一进程在生命周期中不休眠,以及配置所述第一进程的应用界面在生命周期中允许绘制于所述第一显示区域。17.根据权利要求15所述的方法,其特征在于,所述向所述第二设备发送第一数据之前,所述方法还包括:所述第一设备根据绘制于所述第一显示区域的应用界面,生成所述第一数据,所述第一数据包括所述应用界面对应的应用图层。18.根据权利要求15所述的方法,其特征在于,在创建第一显示区域之后,所述方法还包括:所述第一设备给所述第一显示区域标记第二标签;在确定所述第一显示区域标记有所述第二标签之后,所述第一设备配置所述第一显示区域不休眠,以及配置不在所述第一显示区域上绘制锁屏图层。19.根据权利要求15所述的方法,其特征在于,在所述第二设备显示所述第一窗口之后,所述方法还包括:所述第一设备响应于用户指示解除锁屏或息屏状态的操作,显示所述第一进程对应的应用界面。20.一种同源投屏方法,其特征在于,应用于第二设备,所述第二设备与第一设备通信连接,所述第一设备处于息屏状态或锁屏状态,所述方法包括:所述第二设备接收所述第一设备转发的第一消息;所述第二设备显示第一控件,所述第一控件用于显示来自所述第一设备的第一消息;所述第二设备响应于用户对所述第一控件的操作,向所述第一设备发送第一请求;其
中,所述第一请求,用于指示所述第一设备创建第一显示区域,所述第一显示区域是所述第一设备中不可见的显示区域;所述第一显示区域不休眠且不绘制锁屏图层;所述第一请求,还用于指示所述第一设备启动第一应用,所述第一消息是所述第一应用的应用消息,所述第一应用包括第一进程,所述第一进程不休眠;所述第一进程的应用界面绘制于所述第一显示区域;所述第二设备接收所述第一设备发送的第一数据;所述第二设备响应于所述第一数据,显示第一窗口,所述第一窗口中显示所述第一显示区域中绘制的显示内容。21.根据权利要求20所述的方法,其特征在于,所述第二设备响应于用户对所述第一控件的操作,在所述向所述第一设备发送第一请求之前,所述方法还包括:所述第二设备显示第二窗口,所述第二窗口为分布式认证窗口;在显示所述第二窗口期间,所述第二设备接收用户输入的密码信息;所述第二设备向所述第一设备发送所述密码信息;在所述密码信息与所述第二设备中预置的解锁密钥匹配时,向所述第二设备发送第一响应信息,所述第一响应信息指示所述第二设备通过分布式认证。22.根据权利要求21所述的方法,其特征在于,在所述第二设备显示第二窗口之前,所述方法还包括:所述第二设备确定所述第一设备中已配置有所述解锁密钥。23.根据权利要求21或22所述的方法,其特征在于,在所述第二设备显示第二窗口之前,所述方法还包括:所述第二设备获取相邻上一次接收到所述第一响应信息的第一时间点;所述第二设备确定第一时间间隔大于第一阈值,所述第一时间间隔是所述第一时间点与当前系统时间之间的间隔。24.根据权利要求20所述的方法,其特征在于,在所述向所述第一设备发送第一请求之前,所述方法还包括:所述第二设备确定所述第一设备中未配置解锁密钥,所述解锁密钥是解除所述第一设备锁屏状态的密钥。25.根据权利要求20所述的方法,其特征在于,在所述向所述第一设备发送第一请求之前,所述方法还包括:所述第二设备确定所述第一设备中已配置解锁密钥;所述第二设备获取第一时间点,所述第一时间点是相邻上一次接收到所述第一设备反馈的第一响应信息的系统时间,所述第一响应信息指示所述第二设备发出的密码信息与所述第一设备中内置的解锁密钥相匹配;所述第二设备确定第二时间间隔不大于第一阈值,所述第二时间间隔是所述第一时间点与当前系统时间之间的间隔。26.根据权利要求20所述的方法,其特征在于,所述方法还包括:所述第二设备响应于用户指示查看消息列表的操作,显示第三窗口,所述第三窗口中包括第二控件,所述第二控件显示有来自第一设备的第二消息,所述第二消息是第二应用的应用消息;
在所述第一设备中的第二应用启用了应用锁的情况下,所述第二设备响应于用户对所述第二控件的操作,显示第一提醒信息,所述第一提醒信息指示所述第二应用受应用锁保护,无法进行投屏。27.根据权利要求20所述的方法,其特征在于,所述方法还包括:所述第二设备响应于用户指示查看消息列表的操作,显示第三窗口,所述第三窗口中包括第三控件,所述第三控件显示有来自第三设备的第三消息;在用于投屏的通信通道被占用的情况下,所述第二设备响应于用户对所述第三控件的操作,显示第二提醒信息,所述第二提醒信息指示当前存在网络连接冲突的问题。28.根据权利要求20所述的方法,其特征在于,所述方法还包括:所述第二设备响应于用户指示查看消息列表的操作,显示第三窗口,所述第三窗口中包括第三控件,所述第三控件显示有来自第三设备的第三消息;在所述第二设备与所述第三设备之间网络质量不符合预设条件的情况下,所述第二设备响应于用户对所述第三控件的操作,显示第三提醒信息,所述第三提醒信息指示网络质量影响本次投屏。29.根据权利要求20所述的方法,其特征在于,在所述第二设备显示所述第一窗口期间,如果所述第一设备接收到用户指示解除锁屏或息屏状态的操作,所述第一设备继续保持锁屏或息屏状态。30.一种电子设备,其特征在于,电子设备包括一个或多个处理器和存储器;所述存储器与处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,所述一个或多个处理器,用于执行如权利要求15-29中任一项所述的方法。31.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求15-29中任一项所述的方法。
技术总结
本申请实施例提供了一种同源投屏方法及电子设备,涉及终端技术领域。解决第一设备处于锁屏或息屏状态时,不能正常向其他设备投屏的问题。具体方案为:第一设备向第二设备转发第一消息,第二设备显示第一控件,第一控件用于显示来自第一设备的第一消息;第二设备向第一设备发送第一请求;第一设备创建第一显示区域,第一显示区域是第一设备中不可见的显示区域;第一显示区域不休眠且不绘制锁屏图层;第一设备启动第一应用,第一应用包括第一进程,第一进程不休眠;第一设备在第一显示区域中绘制第一进程的应用界面之后,向第二设备发送第一数据;第二设备响应于第一数据,显示第一窗口,第一窗口中显示第一显示区域中绘制的显示内容。内容。内容。
技术研发人员:王冬伟
受保护的技术使用者:荣耀终端有限公司
技术研发日:2022.10.29
技术公布日:2023/9/11
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/