掌桥专利:专业的专利平台
掌桥专利
首页

投屏显示方法、装置、电子设备和存储介质

文献发布时间:2023-06-19 16:06:26



技术领域

本申请涉及投屏控制技术领域,尤其涉及一种投屏显示方法、装置、电子设备和存储介质。

背景技术

随时互联网技术的发展,目前终端设备通常支持安装多个操作系统,特别是车机终端。例如,车机终端中可以安装两个操作系统,两个操作系统分别对车机的不同信息进行显示,且可以通过两个显示屏分别运行两个操作系统。

在通过不同的显示屏运行不同操作系统,以显示操作系统的界面时,显示屏安装的位置不同,例如,在车机中可以将一个显示屏安装在驾驶位的正前方,另一个显示屏安装在驾驶位的左侧或者右侧,用户可能需要在一个操作系统对应的显示屏上查看另一个操作系统的界面。但是,现有技术中并不支持运行于同一电子设备的多个操作系统之间进行互相投屏显示,降低了设备的可操作性。

发明内容

本申请实施例提供了一种投屏显示方法、装置、电子设备和存储介质,实现了多操作系统之间的投屏,提升了可操作性。

第一方面,本申请实施例提供了一种投屏显示方法,应用于安装有多个操作系统的电子设备,所述多个操作系统共享所述电子设备的硬件资源,所述电子设备通过不同显示屏运行不同的操作系统,所述方法包括:

接收用户针对运行目标操作系统的显示屏的投屏操作。

响应于所述投屏操作,将基于所述目标操作系统运行的当前目标应用程序对应的投屏信息发送给其他操作系统,所述其他操作系统为所述多个操作系统中除目标操作系统之外的任一操作系统,所述投屏信息包括目标应用程序在运行所述目标操作系统的显示屏上当前显示的界面信息,所述其他操作系统无法运行所述目标应用程序。

在运行所述其他操作系统的显示屏上显示所述目标应用程序的界面信息。

可选的,所述响应于所述投屏操作,将运行所述目标操作系统的显示屏对应的投屏信息发送给所述其他操作系统,包括:

响应于所述投屏操作,在所述目标操作系统中创建虚拟显示屏;

将包括所述目标应用程序的界面信息的投屏信息镜像到所述虚拟显示屏。

通过所述目标操作系统与所述其他操作系统之间的通信连接,将所述虚拟显示屏中的所述投屏信息发送给所述其他操作系统。

可选的,所述通过所述目标操作系统与所述其他操作系统之间的通信连接,将所述虚拟显示屏中的所述投屏信息发送给所述其他操作系统,包括:

建立所述目标操作系统与所述其他操作系统之间的socket通信连接;

通过所述socket通信连接,将所述虚拟显示屏中的显示缓存buffer中的投屏信息发送给所述其他操作系统。

可选的,所述在运行所述其他操作系统的显示屏上显示所述目标应用程序的界面,包括:

利用所述其他操作系统中的recv函数接收通过socket通信连接传输的所述显示缓存buffer中的所述投屏信息。

对所述投屏信息进行解析,确定所述投屏信息对应的显示尺寸和界面信息,所述显示尺寸为虚拟显示屏的显示尺寸。

根据所述显示尺寸和所述界面信息,在所述运行所述其他操作系统的显示屏上显示所述目标应用程序的界面。

可选的,所述方法还包括:

监听所述socket通信的连接是否正常。

可选的,在接收用户针对运行目标操作系统的显示屏的投屏操作之前,所述方法包括:

接收到用于启动所述目标操作系统中的目标应用程序的操作。

响应于所述操作,在所述运行目标操作系统的显示屏上显示所述目标应用程序的界面。

第二方面,本申请实施例提供了一种投屏显示装置,所述投屏显示装置包括:

接收模块,用于接收用户针对运行目标操作系统的显示屏的投屏操作。

处理模块,用于响应于所述投屏操作,将基于所述目标操作系统运行的当前目标应用程序对应的投屏信息发送给其他操作系统,所述其他操作系统为多个操作系统中除目标操作系统之外的任一操作系统,所述投屏信息包括目标应用程序在运行所述目标操作系统的显示屏上当前显示的界面信息,所述其他操作系统无法运行所述目标应用程序。

显示模块,用于在运行所述其他操作系统的显示屏上显示所述目标应用程序的界面信息。

可选的,所述处理模块,具体用于响应于所述投屏操作,在所述目标操作系统中创建虚拟显示屏;将包括所述目标应用程序的界面信息的投屏信息镜像到所述虚拟显示屏;通过所述目标操作系统与所述其他操作系统之间的通信连接,将所述虚拟显示屏中的所述投屏信息发送给所述其他操作系统。

可选的,所述处理模块,具体用于建立所述目标操作系统与所述其他操作系统之间的socket通信连接;通过所述socket通信连接,将所述虚拟显示屏中的显示缓存buffer中的投屏信息发送给所述其他操作系统。

可选的,所述显示模块,具体用于利用所述其他操作系统中的recv函数接收通过socket通信连接传输的所述显示缓存buffer中的所述投屏信息;对所述投屏信息进行解析,确定所述投屏信息对应的显示尺寸和界面信息,所述显示尺寸为虚拟显示屏的显示尺寸;根据所述显示尺寸和所述界面信息,在所述运行所述其他操作系统的显示屏上显示所述目标应用程序的界面。

可选的,所述装置还包括监听模块,所述监听模块,用于监听所述socket通信的连接是否正常。

可选的,所述显示模块,还用于接收到用于启动所述目标操作系统中的目标应用程序的操作;响应于所述操作,在所述运行目标操作系统的显示屏上显示所述目标应用程序的界面。

第三方面,本申请实施例还提供了一种电子设备,该电子设备包括:处理器,以及与所述处理器通信连接的存储器;

所述存储器存储计算机执行指令;

所述处理器执行所述存储器存储的计算机执行指令,以实现上述第一方面任一种可能的实现方式中所述的方法。

第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现上述第一方面任一种可能的实现方式中所述的方法。

第五方面,本申请实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,实现上述第一方面任一种可能的实现方式中所述的方法。

由此可见,本申请实施例提供了一种投屏显示方法、装置、电子设备和存储介质,该投屏显示方法可以应用于安装有多个操作系统的电子设备,多个操作系统共享电子设备的硬件资源,电子设备通过不同显示屏运行不同的操作系统。通过接收用户针对运行目标操作系统的显示屏的投屏操作;响应于投屏操作,将基于目标操作系统当前运行的目标应用程序对应的投屏信息发送给其他操作系统,其他操作系统为多个操作系统中除目标操作系统之外的任一操作系统,投屏信息包括目标应用程序在运行目标操作系统的显示屏上当前显示的界面信息,其他操作系统无法运行目标应用程序;在运行其他操作系统的显示屏上显示目标应用程序的界面信息。本申请实施例提供的技术方案通过响应于投屏操作,能够将目标操作系统的显示屏上显示的目标应用程序的界面投屏到其他操作系统中其他操作系统无法运行目标应用程序。实现了多系统之间的投屏,增强了系统的可操作性。此外,能够在无法运行目标应用程序的操作系统的显示屏显示目标应用程序的界面,有效的提升了用户体验。

附图说明

图1为本申请实施例提供的一种投屏显示方法的应用场景示意图;

图2为本申请实施例提供的一种投屏显示方法的流程示意图;

图3为本申请实施例提供的另一种投屏显示方法的流程示意图;

图4为本申请实施例提供一种操作系统通信连接的框架示意图;

图5为本申请实施例提供的一种投屏显示装置的结构示意图;

图6为本申请提供的一种电子设备结构示意图。

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

在本申请的实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。在本申请的文字描述中,字符“/”一般表示前后关联对象是一种“或”的关系。

本申请实施例提供的技术方案可以应用于投屏的场景中。投屏功能提升了电子设备的可操作性,能够为用户提供极大的便利。现有技术中,能够实现两个电子设备之间的投屏,例如,通过手机上的投屏功能可以将手机的显示界面投屏到电视的显示屏上,能够放大手机的显示界面,使得用户能够在电视的显示屏幕上观看手机的显示界面。

目前,电子设备支持安装多个操作系统,例如,车机终端上可以安装两个操作系统,一个操作系统为仪表操作系统,另一个操作系统为娱乐操作系统,且每个操作系统仅对应于一个显示屏,能够通过两个显示屏分别对仪表信息和娱乐信息进行显示。

但是,不同的操作系统界面在不同的显示屏上显示时,由于显示屏安装位置的不同,用户可能需要在一个操作系统对应的显示屏上查看另一个操作系统的界面。或者,多个操作系统上能够运行的应用程序不同,可能存在用户需要在未安装某应用程序的操作系统的显示屏上查看该应用程序的界面。然而,现有技术并不支持将一个操作系统的显示屏当前显示的界面投屏到在另一个操作系统对应的显示屏上显示,使得设备的可操作较差。

为了解决现有技术中无法将同一个电子设备中运行的一个操作系统当前显示的应用程序的界面投屏到无法运行该应用程序的界面上,导致设备的可操作性不高的问题,可以在操作系统中设定特定的操作,例如用于投屏的手势操作。使得操作系统在接收到特定的操作时,可以将该操作系统的显示屏上当前显示的应用程序的界面的信息作为投屏信息显示发送给多个操作系统中无法运行该应用程序的另一个操作系统,使得在另一个操作系统的显示屏上显示该应用程序的界面。实现了多操作之间的投屏,能够在无法运行某应用程序的操作系统的显示屏上显示该应用程序的界面,有效地提升了电子设备的可操作性,为用户提供了便利,提升了用户体验。

图1为本申请实施例提供的一种投屏显示方法的应用场景示意图。本申请的图1以电子设备10中包括第一操作系统101和第二操作系统102为例进行说明,根据图1所示,电子设备10中的第一操作系统101和第二操作系统102能够同时运行。第一操作系统101与第一显示屏20连接,使得第一操作系统101在运行时,能够通过第一显示屏20显示第一操作系统界面。第二操作系统102与第二显示屏30连接,使得第二操作系统102在运行时,能够通过第二显示屏30显示第二操作系统界面。其中,第一操作系统101和第二操作系统102中能够运行的应用程序不相同,例如,第一操作系统101能够运行应用程序A,而第二操作系统102无法运行应用程序A。

第一操作系统101和第二操作系统102之间可以通过建立的通信连接进行数据的传输。示例的,在第一显示屏20显示第一操作系统中运行的应用程序A的界面,第二显示屏30显示第二操作系统的界面时,用户可以在第一显示屏20上输入系统投屏功能对应的特定操作,例如,三指滑动等手势操作,将应用程序A的界面投屏到第二显示屏30上。示例的,第一操作系统101接收到系统投屏功能对应的特定操作,可以通过第一操作系统101和第二操作系统102之间的通信连接,将当前显示的应用程序A的界面对应的投屏信息发送给第二操作系统102,使得第二操作系统102根据接收到的投屏信息,在第二显示屏30上显示应用程序A的界面,以实现将第一显示屏20的界面投屏到第二显示屏30上,实现多系统之间的投屏。

在一种可能的实现方式中,若第一操作系统101无法运行应用程序B,第二操作系统102可以运行应用程序B。在第二显示屏30上显示应用程序B的界面时,用户可以在第二显示屏30上输入系统投屏功能对应的特定操作,以将应用程序B的界面投屏到第一显示屏20上显示。能够实现多系统之间的互相投屏。

本申请实施例提供的技术方案能够实现两个操作系统之间的投屏,且两个操作系统运行在同一电子设备中,提升了电子设备的可操作性,能够提升用于的体验。

下面,将通过具体的实施例对本申请提供的投屏显示方法进行详细地说明。可以理解的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

图2为本申请实施例提供的一种投屏显示方法的流程示意图。该投屏显示方法可以由软件和/或硬件装置执行,例如,该硬件装置可以为投屏显示装置,该投屏显示装置可以为电子设备或者电子设备中的处理芯片。示例的,电子设备中安装有多个操作系统,且多个操作系统共享该电子设备的硬件资源,电子设备通过不同显示屏显示不同的操作系统。

根据图2所示,该投屏显示方法可以包括:

S201、接收用户针对运行目标操作系统的显示屏的投屏操作。

示例的,目标操作系统可以为电子设备中安装的多个操作系统中的任一个操作系统,第一操作系统可以为Android操作系统,也可以为Automotive Grade Linux操作系统,或者其他类型的操作系统,具体的可根据实际情况进行设定,本申请实施例对于目标操作系统不做任何限定。

示例的,在接收用户针对运行目标操作系统的显示屏的投屏操作时,目标操作系统的显示屏上当前显示的界面可以为目标操作系统上安装的某个应用程序的界面,例如导航应用程序的界面、音乐应用程序的界面等,电子设备中除目标操作系统之外的其他操作系统无法运行该应用程序信息。本申请实施例对目标应用程序当前运行的应用程序不做任何限定。

可以理解的是,本申请中的其他操作系统为无法运行目标操作系统当前运行的目标应用程序的操作系统。

示例的,针对运行目标操作系统的显示屏的投屏操作可以为用户在显示第一界面的显示屏上输入的操作。例如,若运行目标操作系统的显示屏处于运行待投屏的其他操作系统的显示屏的左侧,用户可以在运行目标操作系统的显示屏上执行三指滑动的操作,且滑动的方向指向运行待投屏的其他操作系统的显示屏的方向。针对运行目标操作系统的显示屏的投屏操作还可以为例如,用户在运行目标操作系统的显示屏上画对号,或者,画圆圈等等特定的手势操作,本申请实施例对于操作不做具体限定。

示例的,目标操作系统中可以设定手势操作监听功能,根据监听到的手势在运行目标操作系统的显示屏上对应的触摸区域或者触摸到的区域的优先级,确定是否对监听到的手势进行拦截。例如,设定针对运行目标操作系统的显示屏的投屏操作是对运行目标操作系统的显示屏执行自下而上的双指滑动的手势操作,若监听到手势操作在运行目标操作系统的显示屏上对应的触摸区域为运行目标操作系统的显示屏下方的三分之一或者三分之二的区域,触摸到的区域的优先级为最先触摸的区域为运行目标操作系统的显示屏的下方的区域,其次触摸的区域均为优先级最大的区域的上方,即能够根据优先级确定手势操作的操作方向,则对该手势进行拦截。能够避免目标操作系统响应于该手势操作执行除投屏操作之外的操作,提升投屏操作的准确度。

可以理解的是,针对运行目标操作系统的显示屏的投屏操作可以在该显示屏上显示特定应用程序的界面时执行,该应用程序可以为其他操作系统中无法运行的应用程序。本申请对于具体的应用程序不做具体限定。

S202、响应于投屏操作,将基于目标操作系统当前运行的目标应用程序对应的投屏信息发送给其他操作系统。

其他操作系统为多个操作系统中除目标操作系统之外的任一操作系统,投屏信息包括目标应用程序在运行目标操作系统的显示屏上当前显示的界面信息,其他操作系统无法运行目标应用程序。

示例的,其他操作系统可以为Android操作系统,也可以为Automotive GradeLinux操作系统,或者其他类型的操作系统,具体的可根据实际情况进行设定,本申请实施例对于其他操作系统不做任何限定。

示例的,其他操作系统的显示屏上当前显示的界面可以为该操作系统的桌面或者该操作系统上安装的应用程序的界面,或者该操作系统的其他界面,例如,车辆中仪表信息的界面,本申请实施例对此不做任何限定。

示例的,投屏信息可以为如应用程序的界面的图层和RGB数据等,本申请实施例对于投屏信息不做具体限定。

在目标操作系统响应于投屏操作,将运行目标操作系统得显示屏对应的投屏信息发送给其他操作系统时,目标操作系统可以响应于该投屏操作,在目标操作系统中创建虚拟显示屏;将包括目标应用程序的界面信息的投屏信息镜像到虚拟显示屏;通过目标操作系统与其他操作系统之间的通信连接,将虚拟显示屏中的投屏信息发送给其他操作系统。

例如,目标操作系统可以通过VirtualDisplay构建一个虚拟屏,并且通过指定的参数VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,可以在构建的虚拟屏上显示目标操作系统当前运行的目标应用程序的界面。具体的,可以在目标操作系统的SurfaceFlinger核心底层服务合成数据时,在rebuildLayerStacks函数中根据VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR参数的值,将目标操作系统的目标应用程序的界面上的图层全部复制到虚拟屏上。本申请实施例仅以上述过程为例进行描述,但并不代表本申请实施例仅局限于此。

可以理解的是,运行目标操作系统的显示屏和运行其他操作系统的显示屏的尺寸可能不同,或者,目标应用程序的界面在运行其他操作系统的显示屏上显示时的尺寸和在运行目标操作系统的显示屏上显示时的尺寸可能不同。因此,在构建虚拟屏时,可以根据实际情况对虚拟屏的尺寸进行设定,使得构建的虚拟屏的尺寸与目标应用程序的界面在运行其他操作系统的显示屏显示屏上显示时的尺寸相对应。例如,目标应用程序的界面在运行其他操作系统的显示屏上半屏显示,则虚拟屏的尺寸为运行其他操作系统的显示屏的尺寸的二分之一。本申请实施例对于第一界面在第二显示屏上显示时的尺寸不做具体限定。

在本申请实施例中,通过在目标操作系统中创建虚拟屏,且通过目标操作系统和其他操作系统之间的通信连接,将投屏信息发送给其他操作系统,使得其他操作系统能够准确地获取到目标操作系统的投屏信息,从而对目标操作系统当前运行的目标应用程序的界面进行准确的显示。

示例的,目标操作系统在通过目标作系统与其他操作系统之间的通信连接,将虚拟显示屏中的投屏信息发送给其他操作系统时,可以建立目标操作系统与其他操作系统之间的socket通信连接;通过socket通信连接,将虚拟显示屏中的显示缓存buffer中的投屏信息发送给其他操作系统。

可以理解的是,目标操作系统与其他操作系统之间的socket通信连接可以在虚拟屏创建完成后,也可以在虚拟屏创建的过程中,能够避免在不存在投屏信息需要传输时,建立socket通信连接导致操作系统资源浪费的问题,使得仅在需要传输投屏信息时建立socket通信连接。

在本申请实施例中,通过目标操作系统与其他操作系统之间的socket通信连接传输投屏信息,实现了将同一个电子设备中运行的多个操作系统之间的投屏信息的传输,从而实现操作系统之间的投屏。

在第一操作系统通过socket通信连接将投屏信息发送给第二操作系统中时,可以执行下述步骤S205:

S203、在运行其他操作系统的显示屏上显示目标应用程序的界面信息。

示例的,在运行其他操作系统的显示屏显示其对应的界面时,可以利用其他操作系统中的recv函数接收通过socket通信连接传输的显示缓存buffer中的投屏信息;对投屏信息进行解析,确定投屏信息对应的显示尺寸和界面信息,显示尺寸为虚拟显示屏的显示尺寸;根据显示尺寸和界面信息,在运行其他操作系统的显示屏上显示目标应用程序的界面。

其他操作系统在对投屏信息进行解析,确定投屏信息对应的显示尺寸和界面信息时,可以通过其他操作系统中用于显示界面的核心服务进行解析,例如,可以通过其他操作系统中的SurfaceFlinger核心服务,对接收到的投屏信息进行锁定,在投屏信息中解析出长宽信息,从而确定投屏信息对应的显示尺寸。对图像信息等进行解析,得到投屏信息对应的界面信息。

示例的,在运行其他操作系统的显示屏上显示目标应用程序的界面时,可以在运行其他操作系统的显示屏上对目标应用程序的界面进行全屏显示,也可以在运行其他操作系统的显示屏上同时显示目标应用程序的界面和该显示屏上原来显示的界面。目标应用程序的界面在运行其他操作系统的显示屏上不同的显示方式对应的显示尺寸不同,根据上述步骤S204所述,虚拟屏的尺寸可以根据实际情况进行设定。因此,可以在构建虚拟屏时根据需要显示的尺寸构建,使得在运行其他操作系统的显示屏上能够清晰准确的显示目标应用程序的界面。

示例的,在根据显示尺寸和界面信息,在运行其他操作系统的显示屏上显示目标应用程序的界面时,可以根据不同的显示尺寸在运行其他操作系统的显示屏上显示目标应用程序的界面,例如,若显示尺寸为运行其他操作系统的显示屏全屏显示时的尺寸,则根据界面信息在运行其他操作系统的显示屏上显示目标应用程序的界面。本申请实施例对于运行其他操作系统的显示屏上显示目标应用程序的界面的具体方式不做任何限定。

在本申请实施例中,其他操作系统可以根据接收到的投屏确定出显示尺寸和界面信息,以在运行其他操作系统的显示屏上显示目标应用程序的界面,能够保证目标应用程序的界面在运行其他操作系统的显示屏上的准确度,进一步提升用户体验。

示例的,在通过目标操作系统和其他操作系统之间的socket通信连接传输投屏信息时,可以监听通过socket通信连接传输的数据。例如,可以通过socket通信连接中自带的监听程序进行数据传输的监听。本申请实施例对于具体的监听方式不做任何限定。

在本申请实施例中,通过监听socket通信连接传输的数据,能够确定socket通信连接传输的数据是否出现错误,保证数据传输的准确度。

由此可见,本申请实施例提供的投屏显示方法,应用于安装有多个操作系统的电子设备,多个操作系统共享电子设备的硬件资源,电子设备通过不同显示屏运行不同的操作系统,方法包括:接收用户针对运行目标操作系统的显示屏的投屏操作;响应于投屏操作,将基于目标操作系统当前运行的目标应用程序对应的投屏信息发送给其他操作系统,其他操作系统为多个操作系统中除目标操作系统之外的任一操作系统,投屏信息包括目标应用程序在运行目标操作系统的显示屏上当前显示的界面信息,其他操作系统无法运行目标应用程序;在运行其他操作系统的显示屏上显示目标应用程序的界面信息。本申请实施例提供的技术方案通过响应于针对目标操作系统的显示屏的投屏操作,在运行其他操作系统的显示屏上显示目标操作系统当前运行的目标应用程序的界面,实现了多个操作系统之间的投屏,增强了电子设备的可操作性,有效地提升了用户体验。此外,实现了在无法运行目标应用程序的操作系统的显示屏上显示该目标应用程序的界面。

在本申请的另一实施例中,目标操作系统在接收用户针对运行目标操作系统的显示屏的投屏操作之前,目标操作系统若接收到用于启动目标操作系统中的目标应用程序的操作;响应于操作,在运行目标操作系统的显示屏显示目标应用程序的界面。

例如,目标操作系统在接收到用户通过点击运行目标操作系统的显示屏上的导航应用程序的图标操作时,响应于该操作,在运行目标操作系统的显示屏上显示导航应用程序的界面。

示例的,目标操作系统可以通过startActivity将目标应用程序的界面显示到运行目标操作系统的显示屏上。具体的,目标操作系统中的ActivityManagerService核心服务通过startActivity选择合适的任务和堆栈。调用activity.attach方法和窗口Window建立联系,从而创建PhoneWindow。通过调用WindowManager.addView添加到窗口管理服务(WindowManagerService,简称WMS)中,从而通过SurfaceFlinger将目标应用程序的界面显示到运行目标操作系统的显示屏。本申请实施例仅以上述方式为例进行说明,但并代表本申请实施例仅局限于此。

在本申请实施例中,目标操作系统可以通过响应于用于启动目标作系统中的目标应用程序的操作,在运行目标操作系统的显示屏上显示目标应用程序的界面,为将目标应用程序的界面投屏到运行其他操作系统的显示屏上提供了方法支持,提升了用户体验。

可以理解的是,本申请实施例提供的技术方案可以实现多个操作系统之间的投屏,也就是说,根据本申请实施例提供的技术方案可以将运行在其中一个操作系统中的目标应用程序的界面投屏到无法运行目标应用程序的操作的显示屏,投屏的方法可参见上述实施例所述,本申请实施例在此不再赘述。

为了便于理解本申请实施例提供的投屏显示方法,下面,将以目标操作系统为车机终端中的Android操作系统,无法运行目标应用程序的操作系统为车机终端中的Automotive Grade Linux操作系统为例,对本申请实施例提供的技术方案进行详细的描述,具体的可参见图3所示,图3为本申请实施例提供的另一种投屏显示方法的流程示意图。

根据图3所示,该投屏显示方法可以包括下述步骤:

步骤1、开始。

步骤2、车机终端上电。

示例的,在车机终端上电时,Android操作系统和AGL操作系统可以同事启动,即同事执行下述步骤2和步骤3,也可以依次启动,本申请实施例对于两个操作系统的启动顺序不做任何限定。

步骤3、Android操作系统启动,在运行Android操作系统的显示屏上显示其桌面。

示例的,Android操作系统可以为车机端的娱乐操作系统,在运行Android操作系统的显示屏上显示的Android操作系统的桌面上包括多个应用程序的图标,例如,导航应用程序的图标,音乐应用程序的图标等。本申请实施例对于Android操作系统的桌面不做具体限定。

步骤4、AGL操作系统启动,在运行AGL操作系统的显示屏上显示其桌面。

示例的,AGL操作系统可以为车机端的仪表操作系统,在第二显示屏上显示的AGL操作系统的桌面上包括车辆的多个仪表信息。

步骤5、接收启动导航应用程序的第一手势操作。

在本步骤中,接收到的启动导航应用程序的第一手势操作可以为用户对导航应用程序的点击操作,或者滑动操作,本申请实施例对于第一手势操作不做具体限定。

步骤6、在运行Android操作系统的显示屏上显示导航界面。

在本步骤中,在运行Android操作系统的显示屏上显示导航界面的方法可参见上述实施例所述的在运行目标操作系统的显示屏上显示目标应用程序的界面的方法,本申请实施例在此不再赘述。

步骤7、接收用于投屏的第二手势操作。

在本步骤中,接收到的第二手势操作可以为用户在运行Android操作系统的显示屏上三指向运行AGL操作系统的显示屏所在的方向滑动的手势操作,本申请实施例对于第二手势操作不做具体限定。

步骤8、构建虚拟屏。

示例的,构建虚拟屏的具体方法可以参见上述实施例所述的构建虚拟屏的方法,本申请实施例在此不再赘述。

步骤9、建立两操作系统之间的socket通信连接。

在本步骤中,可以在Android操作系统构建的流程中插桩,即在构建虚拟屏的过程中增加建立socket通信连接的逻辑。

例如,可以通过ip地址在Android操作系统和AGL操作系统之间建立socket通信连接。可通过下述代码实现通信连接的建立。

struct sockaddr_in serv_addr;

memset(&serv_addr,0,sizeof(serv_addr));

serv_addr.sin_family=AF_INET;

serv_addr.sin_addr.s_addr=inet_addr("192.168.1.4");

serv_addr.sin_port=htons(12345678);

ret=connect(sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr))

步骤10、将投屏信息发送给AGL操作系统。

在本步骤中,可以通过socket通信连接将Android操作系统的投屏信息发送给AGL操作系统,示例的,可以向AGL操作系统发送buffer数据,例如,可以通过以下代码将投屏信息发送给AGL操作系统:

示例的,Android操作系统可以通过调用sendContent的方法将buffer数据通过socket通信连接发送给AGL操作系统,调用sendContent的方法可参见下述代码:

While(offsetgetHeight()){

uint32_t sendLen=buff->getWidth()*4;

ret=sm->sendContent((uint8_t*)base+offset*buff->getWidth()*4,sendLen)

步骤11、AGL操作系统接收投屏信息。

示例的,AGL操作系统用于显示的核心服务是agl-compositor程序,该程序的核心部分是由wayland和weston的代码组成,在核心服务agl-compositor中,可以通过socket通信连接接收Android系统发送的buffer数据。

例如,在建立Android操作系统和AGL操作系统的socket通信连接时,在AGL操作系统侧的代码可参见下述所示:

int serv_sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

struct sockaddr_in serv_addr;

memset(&serv_addr,0,sizeof(serv_addr));

serv_addr.sin_family=AF_INET;

serv_addr.sin_addr.s_addr=inet_addr("192.168.1.4");

serv_addr.sin_port=htons(12345678);

ret=bind(serv_sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr))

示例的,AGL操作系统可以通过recv方法接收buffer数据。

示例的,两个操作系统之间建立的socket通信连接可参见图4所示,图4为本申请实施例提供一种操作系统通信连接的框架示意图。

步骤12、在运行AGL操作系统的显示屏上显示导航界面。

在本步骤中,在运行AGL操作系统的显示屏上显示导航界面时,可以在运行AGL操作系统的显示屏对导航界面进行全屏显示,也可以同时显示导航界面和运行AGL操作系统的显示屏上当前显示的车辆仪表信息。本申请实施例对于具体的显示方式不做任何限定。

步骤13、结束。

综上所述,本申请实施例提供的技术方案能够实现跨操作系统的投屏,丰富了车机终端的功能,增强了操作性,能够有效的提升用户体验。

图5为本申请实施例提供的一种投屏显示装置50的结构示意图,示例的,请参见图5所示,该投屏显示装置50可以包括:

接收模块501,用于接收用户针对运行目标操作系统的显示屏的投屏操作。

处理模块502,用于响应于投屏操作,将基于目标操作系统运行的当前目标应用程序对应的投屏信息发送给其他操作系统,其他操作系统为多个操作系统中除目标操作系统之外的任一操作系统,投屏信息包括目标应用程序在运行目标操作系统的显示屏上当前显示的界面信息,其他操作系统无法运行目标应用程序。

显示模块503,用于在运行其他操作系统的显示屏上显示目标应用程序的界面信息。

可选的,处理模块502,具体用于响应于投屏操作,在目标操作系统中创建虚拟显示屏;将包括目标应用程序的界面信息的投屏信息镜像到虚拟显示屏;通过目标操作系统与其他操作系统之间的通信连接,将虚拟显示屏中的投屏信息发送给其他操作系统。

可选的,处理模块502,具体用于建立目标操作系统与其他操作系统之间的socket通信连接;通过socket通信连接,将虚拟显示屏中的显示缓存buffer中的投屏信息发送给其他操作系统。

可选的,显示模块503,具体用于利用其他操作系统中的recv函数接收通过socket通信连接传输的显示缓存buffer中的投屏信息;对投屏信息进行解析,确定投屏信息对应的显示尺寸和界面信息,显示尺寸为虚拟显示屏的显示尺寸;根据显示尺寸和界面信息,在运行其他操作系统的显示屏上显示目标应用程序的界面。

可选的,装置还包括监听模块504,监听模块504,用于监听socket通信的连接是否正常。

可选的,显示模块503,还用于接收到用于启动目标操作系统中的目标应用程序的操作;响应于操作,在运行目标操作系统的显示屏上显示目标应用程序的界面。

本申请实施例提供的投屏显示装置,可以执行上述任一实施例中的投屏显示方法的技术方案,其实现原理以及有益效果与投屏显示方法的实现原理及有益效果类似,可参见投屏显示方法的实现原理及有益效果,此处不再进行赘述。

图6为本申请提供的一种电子设备结构示意图。如图6所示,该电子设备600可以包括:至少一个处理器601和存储器602。

存储器602,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。

存储器602可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

处理器601用于执行存储器602存储的计算机执行指令,以实现前述方法实施例所描述的投屏显示方法。其中,处理器601可能是一个中央处理器(Central ProcessingUnit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。具体的,在实现前述方法实施例所描述的投屏显示方法时,该电子设备例如可以是终端、服务器等具有处理功能的电子设备。在实现前述方法实施例所描述的投屏显示方法时,该电子设备例如可以是车辆上的电子控制单元。

可选的,该电子设备600还可以包括通信接口603。在具体实现上,如果通信接口603、存储器602和处理器601独立实现,则通信接口603、存储器602和处理器601可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry StandardArchitecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。

可选的,在具体实现上,如果通信接口603、存储器602和处理器601集成在一块芯片上实现,则通信接口603、存储器602和处理器601可以通过内部接口完成通信。

本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有程序指令,程序指令用于上述实施例中的方法。

本申请还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。电子设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得电子设备实施上述的各种实施方式提供的投屏显示方法。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

技术分类

06120114701759