应用程序双屏显示方法及装置与流程

文档序号:20681346发布日期:2020-05-08 18:25阅读:626来源:国知局
应用程序双屏显示方法及装置与流程

本发明涉及安卓车机系统技术领域,具体来说,涉及一种应用程序双屏显示方法及装置。



背景技术:

当前的android(安卓)车机系统普遍采用多屏显示,例如:一个屏幕用于显示仪表信息,另一个屏幕用于显示中控信息。

当android车机系统中存在多个屏幕时,在一些情况下,驾驶员不得不同时关注多个屏幕信息。例如:在用于显示中控信息的屏幕上打开导航,在行驶途中,驾驶员既要观察用于显示仪表信息的屏幕以确定车速、转速、油量等信息,又要观察用于显示中控信息的屏幕以确定行驶路线。这在无形之中,导致了驾驶员的注意力分散,使得驾驶员无法专心驾驶。



技术实现要素:

针对相关技术中的上述问题,本发明提出一种应用程序双屏显示方法及装置,能够在一个双屏系统中,使用副屏通过沉降的方式来显示由主屏启动和控制的应用程序,而不会影响原本在副屏正在使用的应用程序,以使得车辆驾驶员只观察一块屏幕即可获取需要的全部信息。

本发明的技术方案是这样实现的:

根据本发明的一个方面,提供了一种应用程序双屏显示方法,应用于安卓车机系统,车机系统包括主屏和副屏,应用程序双屏显示方法包括:

分别在主屏和副屏上创建应用程序窗口,其中,所创建的主屏的应用程序窗口和副屏的应用程序窗口内显示的内容一致;

将所创建的副屏的应用程序窗口配置在副屏的前台应用程序窗口和背景桌面之间;

配置副屏的前台应用程序窗口具有非零透明度,并将副屏的应用程序窗口与副屏的前台应用程序窗口中的内容进行叠加显示。

根据本发明的实施例,分别在主屏和副屏上创建应用程序窗口,具体包括:在创建应用程序窗口时,对副屏指定相应的displaycontent对象,以使得创建的应用程序窗口同时生成在副屏上;修改框架层,以使得副屏的应用程序与用户交互的逻辑界面同时持有用于主屏显示的窗口对象和用于副屏显示的窗口对象,其中,用于主屏显示的窗口对象与用于控制主屏窗口的对象相关联,用于副屏显示的窗口对象与用于控制副屏窗口的对象相关联;其中,displaycontent是安卓车机系统用于描述物理显示屏特征的类。

根据本发明的实施例,修改框架层,以使得副屏的应用程序与用户交互的逻辑界面同时持有用于主屏显示的窗口对象和用于副屏显示的窗口对象,具体包括:修改用于管理应用程序活动的activityrecord,使其同时持有用于控制主屏窗口的对象和用于控制副屏窗口的对象;修改activity以使得activity持有用于主屏显示的窗口对象和用于副屏显示的窗口对象;将用于主屏显示的窗口对象与用于控制主屏窗口的对象相关联,将用于副屏显示的窗口对象与用于控制副屏窗口的对象相关联;其中,activity是副屏的应用程序与用户交互的逻辑界面。

根据本发明的实施例,配置副屏的前台应用程序窗口具有非零透明度包括:在windowmanagerservice的窗口布局阶段,添加窗口标记以使得前台应用程序窗口的背景被配置为透明或半透明,其中,windowmanagerservice用于管理安卓车机系统内的所有窗口。

根据本发明的实施例,将副屏的应用程序窗口与副屏的前台应用程序窗口进行叠加显示,包括:计算副屏的宽高比;计算副屏的应用程序窗口的宽高比;将副屏的宽高比与副屏的应用程序窗口的宽高比进行比较,当副屏的宽高比与副屏的应用程序窗口的宽高比不同时,根据副屏的宽高比调整副屏的应用程序窗口的位置和尺寸;将副屏的前台应用程序窗口和副屏的应用程序窗口进行叠加渲染并显示。

根据本发明的另一方面,提供了一种应用程序双屏显示装置,应用于安卓车机系统,车机系统包括主屏和副屏,应用程序双屏显示装置包括:窗口创建模块,用于分别在主屏和副屏上创建应用程序窗口,其中,所创建的主屏的应用程序窗口和副屏的应用程序窗口内显示的内容一致;窗口配置模块,用于将所创建的副屏的应用程序窗口配置在副屏的前台应用程序窗口和背景桌面之间;显示模块,用于配置副屏的前台应用程序窗口具有非零透明度,并将副屏的应用程序窗口与副屏的前台应用程序窗口中的内容进行叠加显示。

根据本发明的实施例,窗口创建模块包括:第一创建子模块,用于在创建应用程序窗口时,对副屏指定相应的displaycontent对象,以使得创建的应用程序窗口同时生成在副屏上;第二创建子模块,用于修改框架层,以使得副屏的应用程序与用户交互的逻辑界面同时持有用于主屏显示的窗口对象和用于副屏显示的窗口对象,其中,用于主屏显示的窗口对象与用于控制主屏窗口的对象相关联,用于副屏显示的窗口对象与用于控制副屏窗口的对象相关联;其中,displaycontent是安卓车机系统用于描述物理显示屏特征的类。

根据本发明的实施例,第二创建子模块具体包括:第一修改单元,用于修改用于管理应用程序活动的activityrecord,使其同时持有用于控制主屏窗口的对象和用于控制副屏窗口的对象;第二修改单元,用于修改activity以使得activity持有用于主屏显示的窗口对象和用于副屏显示的窗口对象;关联单元,用于将用于主屏显示的窗口对象与用于控制主屏窗口的对象相关联,将用于副屏显示的窗口对象与用于控制副屏窗口的对象相关联;其中,activity是副屏的应用程序与用户交互的逻辑界面。

根据本发明的实施例,显示模块模块包括:透明度配置子模块,用于在windowmanagerservice的窗口布局阶段,添加窗口标记以使得前台应用程序窗口的背景被配置为透明或半透明,其中,windowmanagerservice用于管理安卓车机系统内的所有窗口。

根据本发明的实施例,显示模块包括:第一计算子模块,用于计算副屏的宽高比;第二计算子模块,用于计算副屏的应用程序窗口的宽高比;窗口调整子模块,用于将副屏的宽高比与副屏的应用程序窗口的宽高比进行比较,当副屏的宽高比与副屏的应用程序窗口的宽高比不同时,根据副屏的宽高比调整副屏的副屏的应用程序窗口的位置和尺寸;显示子模块,用于将副屏的前台应用程序窗口和副屏的应用程序窗口进行叠加渲染并显示。

本发明的上述技术方案,通过在一个包括主屏和副屏的双屏系统中,主屏用于启动和控制应用程序,副屏以沉降方式来显示该应用程序而不会影响原本在副屏中正在使用的前台应用程序。这样,可以满足现代生活中的一些实际需要。以由中控屏和仪表屏构成的双屏车机系统为例,一旦驾驶员在中控屏上打开地图并设置好导航,就无需再观察中控屏,此时将会在仪表屏在显示其自身的仪表信息的同时还将会显示地图和导航信息,使得在行车途中,驾驶员只需要观察仪表屏这一块屏幕即可获取所需要的全部信息,无需分心观察中控屏。

附图说明

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

图1是根据本发明实施例的应用程序双屏显示方法的流程图;

图2a是根据本发明实施例的主屏的应用程序窗口的示意图;

图2b是根据本发明实施例的副屏的应用程序窗口及其前台应用程序窗口的示意图;

图3是根据本发明实施例的在主屏和副屏上创建应用程序窗口的流程图;

图4是根据本发明实施例的修改安卓车机系统的框架层的流程图;

图5是根据本发明实施例的将副屏的应用程序窗口配置在副屏的前台应用程序窗口下方的流程图;

图6是根据本发明实施例的配置副屏的前台应用程序窗口透明度的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。

图1示出了根据本发明实施例的应用程序双屏显示方法的流程图。本发明采用了双屏沉降式应用程序的显示方法,其中,沉降式是指在同一个屏幕上存在两个应用时,透过上层的应用程序,可以观察到下层的应用程序的显示信息。本发明提供的应用程序双屏显示方法可应用于android(安卓)车机系统,android车机系统包括主屏和副屏,本发明相关说明中的双屏是指android车机系统的主屏和副屏。结合图1和图2a至图2b所示,本发明的应用程序双屏显示方法包括以下步骤:

s10,分别在主屏和副屏上创建应用程序窗口。其中,所创建的主屏的应用程序窗口和副屏的应用程序窗口内显示的内容一致。

在一个实施例中,主屏可以是车辆中用于显示中控信息的中控屏,副屏可以是用于显示仪表信息的仪表屏。也就是说,本发明的android车机系统可以是由车辆的中控屏和仪表屏构成的双屏系统。

s20,将所创建的副屏的应用程序窗口配置在副屏的前台应用程序窗口和背景桌面之间。

s30,配置副屏的前台应用程序窗口具有非零透明度,并将副屏的应用程序窗口与副屏的前台应用程序窗口中的内容进行叠加显示。

本发明的上述技术方案,通过在一个包括主屏和副屏的双屏系统中,主屏用于启动和控制应用程序,副屏以沉降方式来显示该应用程序而不会影响原本在副屏中正在使用的前台应用程序。这样,可以满足现代生活中的一些实际需要。以由中控屏和仪表屏构成的双屏车机系统为例,一旦驾驶员在中控屏上打开地图并设置好导航,就无需再观察中控屏,此时将会在仪表屏在显示其自身的仪表信息的同时还将会显示地图和导航信息,使得在行车途中,驾驶员只需要观察仪表屏这一块屏幕即可获取所需要的全部信息,无需分心观察中控屏。

以下对如何分别在主屏和副屏上创建应用程序窗口进行说明。

应用程序在启动时可以通过intent告知android车机系统,需要在副屏上生成用于应用程序的显示窗口的意图。这里,intent是android车机系统定义的用于在各个组件之间传递参数的类,在本发明中intent代表拥有一系列配置参数的实体对象,用于在应用程序和android车机系统之间交换配置参数。android车机系统在接收到intent之后,将在主屏上创建应用程序窗口,同时也在指定的副屏上创建应用程序窗口。在主屏上创建应用程序窗口,这种方式是android车机系统提供的原生功能,同时在副屏上创建应用程序窗口,则需要修改android车机系统的framework层逻辑,使得android车机系统在创建应用程序窗口时,可以在主屏和副屏上同时进行创建。framework层是指android车机系统的框架层,主要为android系统的应用程序提供各种开发接口。如图3所示,在步骤s10处,分别在主屏和副屏上创建应用程序窗口,可以具体包括以下步骤:

s11,在创建应用程序窗口时,对副屏指定相应的displaycontent对象,以使得创建的应用程序窗口同时生成在副屏上。

其中,displaycontent是指安卓车机系统用于描述物理显示屏特征的类。每一个displaycontent对象可代表一块物理显示屏。具体的,可以在appwindowcontainercontroller创建应用程序窗口时,对副屏指定相应的displaycontent对象,该displaycontent对象中包括屏幕信息,可用于指定appwindowcontainercontroller创建的应用程序窗口最终生成在副屏上。其中需要说明的是,appwindowcontainercontroller是android车机系统用于管理应用程序窗口的类,负责创建应用程序窗口。

s12,修改框架层,以使得副屏的应用程序与用户交互的逻辑界面同时持有用于主屏显示的窗口对象和用于副屏显示的窗口对象。其中,用于主屏显示的窗口对象与用于控制主屏窗口的对象相关联,用于副屏显示的窗口对象与用于控制副屏窗口的对象相关联。

在一个具体实施例中,如图4所示,在步骤s12处,修改框架层,以使得副屏的应用程序与用户交互的逻辑界面同时持有用于主屏显示的窗口对象和用于副屏显示的窗口对象,可以具体包括以下步骤:

s121,修改用于管理应用程序活动的activityrecord,使其同时持有用于控制主屏窗口的对象和用于控制副屏窗口的对象。修改框架层的activitymanagerservice,使得用于管理应用程序活动的activityrecord持有用于控制主屏窗口的一个mwindowcontainercontroller对象和用于控制副屏窗口的另一个mwindowcontainercontroller对象。activitymanagerservice是android车机系统framework提供的服务,主要用于管理应用程序的生命周期,负责与windowmanagerservice交互,共同提供android应用程序界面显示功能。activityrecord是activitymanagerservice用来管理应用程序活动的实体类。mwindowcontainercontroller是每个activityrecord负责管理窗口的对象。

具体来说,通过修改activitymanagerservice来修改activityrecord,在生成activityrecord时,添加副屏的mwindowcontainercontroller对象,即activityrecord同时持有两个mwindowcontainercontroller实例对象,其中一个用于控制主屏窗口,另外一个用于控制副屏窗口。

s122,修改activity以使得activity持有用于主屏显示的窗口对象和用于副屏显示的窗口对象,其中activity是副屏的应用程序与用户的交互界面。

s123,将用于主屏显示的窗口对象与用于控制主屏窗口的对象相关联,将用于副屏显示的窗口对象与用于控制副屏窗口的对象相关联。

具体的,通过修改activity,使得一个副屏的应用程序与用户的交互界面,即activity同时持有两个窗口对象phonewindow,一个对象用于主屏显示,另一个对象用于副屏显示。同时在将应用程序窗口添加到系统中时,修改windowmanagerservice,在其中的addwindow方法中,将主屏的phonewindow窗口对象与主屏的mwindowcontainercontroller对象关联,将副屏的phonewindow窗口对象与副屏的mwindowcontainercontroller对象关联。其中,phonewindow用于描述应用程序窗口;windowmanagerservice负责管理android车机系统内所有窗口;addwindow是windowmanagerservice提供的方法,用于将应用程序窗口对象映射到系统中。

在步骤s20(图1)处,android车机系统计算副屏窗口层次,将应用程序放置在副屏的前台应用程序的下方,即副屏可以显示自己屏幕上的应用程序的同时,显示由主屏打开的应用程序。副屏上面的两个应用程序呈现叠加效果显示,在前台显示自己的前台应用程序,同时在后台显示由主屏打开的应用程序。如图5所示,将副屏的应用程序窗口配置在副屏的前台应用程序窗口下方可以包括以下步骤:

s21,定义介于副屏的应用程序界面和android车机系统的背景桌面wallpaper之间的windowtype,windowtype作为android车机系统的窗口纵轴(z轴)顺序的依据。

s22,使用windowtype计算创建的副屏的应用程序窗口在纵轴上的位置,以将副屏的应用程序窗口配置在副屏的前台应用程序窗口下方和背景桌面上方。

通过定义该特殊的windowtype,使得此特殊的windowtype介于副屏的应用程序界面和wallpaper界面之间。由于android车机系统采用windowtype作为窗口z轴顺序的依据,所以在步骤s21处首先定义了特殊的windowtype,之后在步骤s10处添加窗口时,使用windowtype计算打开的应用程序窗口在副屏的真正的z轴位置,使得打开的应用程序窗口在副屏已经存在的前台应用程序窗口下方、并且位于副屏的wallpaper界面上方,即透过副屏的前台应用程序窗口可以看到刚刚打开的应用程序窗口。

在步骤s30(图1)处,可以设置副屏前台应用程序的背景为透明或半透明模式,并获取主屏窗口中应用程序显示内容,将副屏前台应用程序和主屏应用程序显示内容进行合成,然后在副屏上输出显示。如图6所示,在步骤s30处,配置副屏的前台应用程序窗口具有非零透明度可以包括以下步骤:

s31,在windowmanagerservice的窗口布局阶段,添加窗口标记以使得前台应用程序窗口的背景被配置为透明或半透明,其中,windowmanagerservice用于管理安卓车机系统内的所有窗口。

另外,可以在步骤s30处重新计算打开的应用程序窗口大小,具体可以包括以下步骤:

s32,计算副屏的宽高比;

s33,计算副屏的应用程序窗口的宽高比;

s34,将副屏的宽高比与应用程序的宽高比进行比较,当副屏的宽高比与副屏的应用程序窗口的宽高比不同时,根据副屏的宽高比调整副屏的应用程序窗口的位置和尺寸;

s35,将副屏的前台应用程序窗口和副屏的应用程序窗口进行叠加渲染并显示。

在一个实施例中,可以通过获取副屏的分辨率,来计算宽高比例;并通过windowstate获得应用窗口大小,来计算应用程序宽高比例。比较副屏的宽高比与应用程序的宽高比,如果比较的结果为二者相同,则无需调整;如果比较的结果为不相同,则可以通过以下两种方式中的至少一种来进行处理:第一,使用屏幕宽高重新计算窗口大小,并且调整应用程序窗口的位置,使其在副屏的屏幕中间显示;第二,拉伸应用程序窗口大小,直到占满副屏的整个屏幕。其中,windowstate是记录窗口各种属性的类。上述过程将在windowstate的计算过程中实现。

应当理解,在一些实施例中不对副屏前台应用程序窗口的位置和尺寸进行调整。以主屏是车辆中的中控屏、副屏是仪表屏为例,由于仪表屏的前台应用程序窗口是用于显示其自身的仪表信息,因此可以不对仪表屏的前台应用程序窗口的位置和尺寸进行调整。

然后,在一个实施例中,可以通过surfaceflinger将副屏的前台应用程序窗口和打开的应用程序窗口进行叠加渲染,之后由surfaceflinger将合成的窗口图像显示在副屏上。surfaceflinger是android车机系统提供的一种服务,用于接受多个来源的图形显示数据并将它们进行合成,然后发送到显示屏。

最后,由于本发明配置的activity中持有两个窗口对象实例,因此当主屏的应用程序窗口在新的操作下导致窗口有任何更新之后,副屏的应用程序窗口可以一同更新。

根据本发明实施例,提供了应用程序双屏显示装置,可应用于安卓车机系统,车机系统包括主屏和副屏,应用程序双屏显示装置可以包括:

窗口创建模块,用于分别在主屏和副屏上创建应用程序窗口,其中,所创建的主屏的应用程序窗口和副屏的应用程序窗口内显示的内容一致;

窗口配置模块,用于将所创建的副屏的应用程序窗口配置在副屏的前台应用程序窗口和背景桌面之间;

显示模块,用于配置副屏的前台应用程序窗口具有非零透明度,并将副屏的应用程序窗口与副屏的前台应用程序窗口中的内容进行叠加显示。

在一个实施例中,窗口创建模块可以包括第一创建子模块和第二创建子模块。第一创建子模块用于在创建应用程序窗口时,对副屏指定相应的displaycontent对象,以使得创建的应用程序窗口同时生成在副屏上;第二创建子模块用于修改框架层,以使得副屏的应用程序与用户交互的逻辑界面同时持有用于主屏显示的窗口对象和用于副屏显示的窗口对象,其中,用于主屏显示的窗口对象与用于控制主屏窗口的对象相关联,用于副屏显示的窗口对象与用于控制副屏窗口的对象相关联;

其中,displaycontent是安卓车机系统用于描述物理显示屏特征的类。

在一个实施例中,第二创建子模块具体包括:

第一修改单元,修改用于管理应用程序活动的activityrecord,使其同时持有用于控制主屏窗口的对象和用于控制副屏窗口的对象;

第二修改单元,修改activity以使得activity持有用于主屏显示的窗口对象和用于副屏显示的窗口对象;

关联单元,将用于主屏显示的窗口对象与用于控制主屏窗口的对象相关联,将用于副屏显示的窗口对象与用于控制副屏窗口的对象相关联;

其中,activity是副屏的应用程序与用户交互的逻辑界面。

在一个实施例中,显示模块模块可以包括透明度配置子模块,透明度配置子模块用于在windowmanagerservice的窗口布局阶段,添加窗口标记以使得前台应用程序窗口的背景被配置为透明或半透明,其中,windowmanagerservice用于管理安卓车机系统内的所有窗口。

在一个实施例中,显示模块可以包括第一计算子模块、第二计算子模块、窗口调整子模块和显示子模块。第一计算子模块用于计算副屏的宽高比;第二计算子模块用于计算应用程序的宽高比;窗口调整子模块用于将副屏的宽高比与应用程序的宽高比进行比较,当副屏的宽高比与应用程序的宽高比不同时,根据副屏的宽高比调整副屏的应用程序窗口的位置和尺寸;显示子模块用于将副屏的前台应用程序窗口和副屏的应用程序窗口进行叠加渲染并显示。

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

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