用于跨应用视图内嵌的方法、计算机系统和存储介质与流程

未命名 10-19 阅读:93 评论:0


1.本发明涉及跨应用视图内嵌领域,并且更具体地涉及一种用于跨应用视图内嵌的方法、实施该方法的计算机系统和实施该方法的计算机存储介质。


背景技术:

2.目前,车辆系统的桌面框架架构上常需要采用跨应用视图内嵌方案,以将其他应用(例如,地图应用)的视图内嵌到桌面应用视图中。然而,在当前的跨应用视图内嵌方案中由于宿主不是activity组件,因此只通常支持加载内嵌应用的view控件以做显示使用,而不能加载安卓标准的片段(fragment)控件,也无法弹出对话框窗口(dialog)控件、弹窗(popupwindow)控件等依赖于activity组件的小窗口。


技术实现要素:

3.为了解决或至少缓解以上问题中的一个或多个,提供了以下技术方案。本发明的实施例提供了一种用于跨应用视图内嵌的方法、实施该方法的计算机系统和实施该方法的计算机存储介质,其能够在视图内嵌时加载标准片段控件,以实现更加动态和灵活的用户界面管理。
4.按照本发明的第一方面,提供了一种用于跨应用视图内嵌的方法,所述方法包括以下步骤:响应于宿主应用的启动,将所述宿主应用创建的表层对象传递至内嵌应用,其中所述内嵌应用基于片段控件实现用户界面管理;在所述内嵌应用中创建虚拟显示对象和双屏异显对象,并将所述内嵌应用的视图通过所述虚拟显示对象和双屏异显对象绘制在所述表层对象上,以在所述宿主应用中显示所述内嵌应用的视图,其中所述双屏异显对象的创建包括:将所述双屏异显对象作为所述片段控件的宿主,并利用所述双屏异显对象对所述片段控件进行加载和管理。
5.作为以上方案的替代或补充,根据本发明一实施例的方法还包括:在所述宿主应用中添加纹理视图控件并设置所述纹理视图控件的参数,其中所述纹理视图控件指定所述内嵌应用的视图显示区域,并且所述表层对象内嵌在所述纹理视图控件中。
6.作为以上方案的替代或补充,根据本发明一实施例的方法还包括:响应于所述宿主应用的启动,将所述纹理视图控件的参数发送至所述内嵌应用,其中所述参数包括所述内嵌应用在所述宿主应用中的视图显示区域的宽度、高度和分辨率。
7.作为以上方案的替代或补充,在根据本发明一实施例的方法中,将所述纹理视图控件的参数发送至所述内嵌应用以及将所述宿主应用创建的表层对象传递至内嵌应用包括:响应于所述宿主应用的调用请求,所述内嵌应用对所述宿主应用的服务进行绑定;以及在绑定成功之后,所述宿主应用将所述表层对象以及所述纹理视图控件的参数发送至所述内嵌应用。
8.作为以上方案的替代或补充,在根据本发明一实施例的方法中,在所述内嵌应用中创建虚拟显示对象和双屏异显对象包括:基于所述对象以及所述纹理视图控件的参数创
建所述虚拟显示对象,以及利用所述虚拟显示对象创建与所述虚拟显示对象相关联的双屏异显对象;将所述内嵌应用的视图通过所述虚拟显示对象和双屏异显对象绘制在所述表层对象上包括:利用所述双屏异显对象将所述内嵌应用的视图渲染到所述虚拟显示对象中,以及所述虚拟显示对象将渲染内容绘制到由所述宿主应用提供的表层对象上。
9.作为以上方案的替代或补充,在根据本发明一实施例的方法中,将所述双屏异显对象作为所述片段控件的宿主,并利用所述双屏异显对象对所述片段控件进行加载和管理包括:创建片段控制器对象并在创建过程中指定所述双屏异显对象作为所述片段控件的宿主;以及通过实现相应的生命周期函数,使得所述片段控件的生命周期状态与所述双屏异显对象的生命周期状态一致。
10.作为以上方案的替代或补充,在根据本发明一实施例的方法中,通过实现相应的生命周期函数,使得所述片段控件的生命周期状态与所述双屏异显对象的生命周期状态一致包括:当所述双屏异显对象被初始化时,对应地执行所述片段控件的初始化;当所述双屏异显对象由不可见变为可见状态时,对应地使所述片段控件由不可见变为可见状态;当所述双屏异显对象完全不可见时,对应地使所述片段控件完全不可见;以及当所述双屏异显对象被销毁时,对应地执行所述片段控件的销毁。
11.作为以上方案的替代或补充,根据本发明一实施例的方法还包括:将所述纹理视图控件接收到的用户交互事件跨进程传递至所述内嵌应用。
12.作为以上方案的替代或补充,在根据本发明一实施例的方法中,将所述纹理视图控件接收到的用户交互事件跨进程传递至所述内嵌应用包括:响应于所述纹理视图控件接收到用户交互事件,将所述用户交互事件的类型和坐标传递至所述内嵌应用的双屏异显对象。
13.根据本发明的第二方面,提供一种计算机系统,包含:存储器;处理器;以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序的运行使得根据本发明第一方面所述的方法中的任意一项被执行。
14.根据本发明的第三方面,提供一种计算机存储介质,所述计算机存储介质包括指令,所述指令在运行时执行根据本发明第一方面所述的方法中的任意一项。
15.根据本发明的一个或多个实施例的用于跨应用视图内嵌的方案能够将内嵌应用的视图显示在宿主应用的界面上,同时利用双屏异显对象代替activity组件来对内嵌应用的片段控件进行加载和管理,从而避免了由于宿主不是activity组件而引起的不能加载片段控件、无法弹出dialog控件、popupwindow控件等窗口的问题,实现了更加动态和灵活的用户界面管理。
附图说明
16.本发明的上述和/或其它方面和优点将通过以下结合附图的各个方面的描述变得更加清晰和更容易理解,附图中相同或相似的单元采用相同的标号表示。在所述附图中:
17.图1为按照本发明的一个或多个实施例的用于跨应用视图内嵌的方法10的示意性流程图;以及
18.图2为按照本发明的一个或多个实施例的计算机系统20的示意性框图。
具体实施方式
19.以下具体实施方式的描述本质上仅仅是示例性地,并且不旨在限制所公开的技术或所公开的技术的应用和用途。此外,不意图受在前述技术领域、背景技术或以下具体实施方式中呈现的任何明示或暗示的理论的约束。
20.在实施例的以下详细描述中,阐述了许多具体细节以便提供对所公开技术的更透彻理解。然而,对于本领域普通技术人员显而易见的是,可以在没有这些具体细节的情况下实践所公开的技术。在其他实例中,没有详细描述公知的特征,以避免不必要地使描述复杂化。
21.诸如“包含”和“包括”之类的用语表示除了具有在说明书中有直接和明确表述的单元和步骤以外,本发明的技术方案也不排除具有未被直接或明确表述的其它单元和步骤的情形。诸如“第一”和“第二”之类的用语并不表示单元在时间、空间、大小等方面的顺序而仅仅是作区分各单元之用。
22.安卓android在3.0中引入了片段fragment控件的概念,其主要目的是用在大屏幕设备(例如,平板电脑)上,以支持更加动态和灵活的用户界面(ui)设计。可以理解的是,大屏幕有更多的空间来放置更多的ui对象,并且这些ui对象之间会产生更多的交互。片段fragment控件表现activity组件中ui的一个行为或者一部分,其可以是嵌入在activity组件当中的ui片段,以实现对大屏幕的空间的更为合理和充分的利用。片段fragment控件可以包含布局,也有自己的生命周期,可以接收属于它的输入事件,并且可以在activity组件运行期间添加和删除。需要说明的是,通常情况下片段fragment控件的宿主为activity组件,其他宿主类型不能直接加载标准的片段fragment控件。对此,为了满足系统的launcher(即,安卓系统的桌面ui)桌面框架的功能,本技术创造性地利用双屏异显presentation对象代替activity组件来对内嵌应用的片段fragment控件进行加载和管理。在下文中,将参考附图详细地描述根据本发明的各示例性实施例。
23.图1为按照本发明的一个或多个实施例的用于跨应用视图内嵌的方法10的示意性流程图。方法10可适用于将系统(例如,安卓android系统)的内嵌应用的视图显示在宿主应用的指定区域中。
24.需要说明的是,本文中所述的宿主应用指的是提供内嵌容器的应用,而内嵌应用指的是提供内嵌内容并将内嵌内容显示到宿主应用中的应用。示例性地,宿主应用可以是launcher应用,内嵌应用可以是地图应用、导航应用等。需要说明的是,本发明中的内嵌应用基于片段fragment控件实现用户界面管理,也即,内嵌应用本身基于activity组件实现用户界面管理。
25.如图1所示,在步骤s110中,响应于宿主应用的启动,将宿主应用创建的表层对象传递至内嵌应用。
26.表层surface对象是android中用于绘制图形的关键对象,其提供了一个屏幕外缓冲区,可用于在屏幕上绘制图形或播放视频等操作。示例性地,可以通过表层视图surfaceview或纹理视图textureview控件将该表层surface对象显式地展示在系统屏幕上。
27.可选地,在执行步骤s110之前,可以在宿主应用中添加纹理视图textureview控件并设置该纹理视图textureview控件的参数。纹理视图textureview控件是一种支持纹理渲
染的视图控件,其可以用在opengl es场景渲染中,同时也可以用于播放视频等多媒体应用的展现。相对于表层视图surfaceview控件,纹理视图textureview控件更加灵活,其可以在布局中自由定位、缩放和旋转,同时也不会阻塞ui线程。在宿主应用中添加的纹理视图textureview控件指定了内嵌应用的视图显示区域,并且在步骤s110中创建的表层surface对象内嵌在纹理视图textureview控件中。在一个实施例中,宿主应用在系统屏幕的宿主应用显示区中添加上述纹理视图textureview控件,并设置好该控件的大小和摆放位置,该控件即代表内嵌应用将要显示画面的区域。纹理视图textureview控件在创建好之后会带有表层surface对象以及宽、高、密度等信息,以用于传递至内嵌应用。
28.可选地,在添加了纹理视图textureview控件之后,响应于宿主应用的启动,可将表层surface对象以及纹理视图textureview控件的参数发送至内嵌应用,其中所述参数包括内嵌应用在宿主应用中的视图显示区域的宽度、高度和分辨率等信息。
29.可选地,响应于宿主应用的调用请求,内嵌应用对宿主应用的服务进行绑定;在绑定成功之后,宿主应用将表层surface对象以及纹理视图textureview控件的参数发送至内嵌应用。示例性地,宿主应用中存在宿主服务(hostservice),内嵌应用中存在内嵌页面服务(pageembedservice),在宿主应用启动时,会调用系统方法启动pageembedservice,以向内嵌应用通知宿主应用已启动,之后pageembedservice需要绑定hostservice以此来和宿主应用建立联系。在绑定成功之后,内嵌应用通过调用定义好的showsurfacecontent接口来告知宿主将textureview控件的surface对象以及纹理视图textureview控件的参数等信息传回给内嵌应用,宿主应用再利用showsurfacecontent接口中带有的回调函数将上述信息回调给内嵌应用。
30.在步骤s120中,在内嵌应用中创建虚拟显示对象和双屏异显对象,并将内嵌应用的视图通过虚拟显示对象和双屏异显对象绘制在表层对象上,以在宿主应用中显示内嵌应用的视图。可选地,虚拟显示virtualdisplay对象和双屏异显presentation对象的创建具体包括:基于surface对象以及纹理视图textureview控件的参数创建虚拟显示virtualdisplay对象;以及利用虚拟显示virtualdisplay对象创建与虚拟显示virtualdisplay对象相关联的双屏异显presentation对象。可选地,将内嵌应用的视图通过虚拟显示virtualdisplay对象和双屏异显presentation对象绘制在表层surface对象上包括:利用双屏异显presentation对象将内嵌应用的视图渲染到虚拟显示virtualdisplay对象中;以及虚拟显示virtualdisplay对象将渲染内容绘制到由宿主应用提供的表层surface对象上。
31.虚拟显示virtualdisplay对象即虚拟显示器,其能够将各种图像等资源进行渲染,并渲染后的内容以流媒体的形式输出。示例性地,内嵌应用在接收到宿主应用传递过来的surface对象和/或纹理视图textureview控件的参数等信息之后,可通过调用系统类displaymanager的createvirtualdisplay方法,将上述信息传入,以实现虚拟显示virtualdisplay对象的创建。
32.双屏异显presentation对象是android提供的一种多显示器支持方案,其设计初衷是用于将多媒体内容展示到一个外部显示器或投影仪等设备上。本技术利用双屏异显presentation对象将内嵌应用的视图渲染到虚拟显示virtualdisplay对象。示例性地,可利用已创建的虚拟显示virtualdisplay对象,在创建双屏异显presentation对象时将虚拟
显示virtualdisplay传入。在创建好双屏异显presentation对象之后,可直接调用presentation对象的显示show()方法,这时候系统会启动该presentation对象并将其渲染到虚拟显示virtualdisplay对象中,以供虚拟显示virtualdisplay对象将渲染内容绘制并展示到由宿主应用中指定区域中的textureview控件上。
33.需要说明的是,现有技术中只能通过双屏异显presentation对象来实现view控件的加载和管理,而不能加载安卓标准的片段fragment控件。安卓系统中片段fragment控件的加载是依赖于activity组件的,activity组件相当于片段fragment控件的宿主。对此,本发明提出对双屏异显presentation对象进行改造,也即,在步骤s120中的双屏异显presentation对象的创建过程中,将双屏异显presentation对象作为片段fragment控件的宿主,并利用双屏异显presentation对象对片段fragment控件进行加载和管理(例如,页面加载以及对页面的生命周期进行管理)。
34.可选地,上述双屏异显presentation对象的改造过程包括:创建片段控制器fragmentcontroller对象并在创建过程中指定双屏异显presentation对象作为片段fragment控件的宿主。为了管理fragment控件,需要使用片段管理器fragmentmanager对象,示例性地,在presentation对象的创建过程中可通过设置getsupportfragmentmanager方法来获取该fragmentmanager对象。此外,在片段控制器fragmentcontroller对象的创建过程中,通过在ongethost()方法中返回当前的presentation对象,来将当前的presentation对象作为片段fragment控件的宿主,之后可通过执行ongetlayoutinflater()方法来将presentation对象的布局填充器layoutinflater对象提供给片段fragment控件。
35.可选地,上述双屏异显presentation对象的改造过程进一步包括:通过实现相应的生命周期函数,使得片段fragment控件的生命周期状态与双屏异显presentation对象的生命周期状态一致。特别地,为了实现presentation对象对fragment控件的生命周期分发,当presentation对象的生命周期执行到oncreate()、onstart()、onstop()、dismiss()时,可通过对应地执行mfragments.dispatchcreate()、mfragments.dispatchstart()、mfragments.dispatchstop()、mfragments.dispatchdestroyview()来完成宿主presentation对象对fragment控件的生命周期管理。具体而言,当双屏异显presentation对象被初始化(例如,执行oncreate()方法)时,对应地执行片段fragment控件的初始化(例如,执行mfragments.dispatchcreate()方法);当双屏异显presentation对象由不可见变为可见状态(例如,执行onstart()方法)时,对应地使片段fragment控件由不可见变为可见状态(例如,执行mfragments.dispatchstart()方法);当双屏异显presentation对象完全不可见(例如,执行onstop()方法)时,对应地使片段fragment控件完全不可见(例如,执行omfragments.dispatchstop()方法);以及当双屏异显presentation对象被销毁(例如,执行dismiss()方法)时,对应地执行片段fragment控件的销毁(例如,执行mfragments.dispatchdestroyview()方法)。
36.此外,用户交互时间的分发也通过跨进程传递。可选地,方法10还可以包括步骤s130:将纹理视图textureview控件接收到的用户交互事件跨进程传递至内嵌应用。示例性地,当宿主应用中的纹理视图textureview控件接收到的用户交互事件后,可将用户交互事件的类型和坐标传递至内嵌应用的双屏异显presentation对象。具体而言,当上述用户交
互事件为触摸事件时,当宿主应用中的textureview控件接收到触摸事件后将触发系统的ontouchevent(motionevent)方法,每一次手指的触摸会调用一次此方法,同时给出带有触摸信息的对象(也即motionevent),之后将motionevent对象跨应用传递给内嵌应用的presentation对象的dispatchtouchevent(motionevent)方法,这样即完成了整个触摸事件在宿主进程和内嵌应用之间的传递。
37.根据本发明的一个或多个实施例的方法10能够将内嵌应用的视图显示在宿主应用的界面上,同时利用双屏异显presentation对象代替activity组件来对内嵌应用的片段fragment控件进行加载和管理,从而避免了由于宿主不是activity组件而引起的不能加载片段fragment控件、无法弹出dialog控件、popupwindow控件等窗口的问题,实现了更加动态和灵活的用户界面管理。
38.图2为按照本发明的一个或多个实施例的计算机系统20的框图。示例性地,计算机系统20为车机系统。计算机系统20包含存储器210、处理器220、以及存储在存储器210上并可在处理器220上运行的计算机程序230,该计算机程序230的运行使得如图1所示的方法10被执行。
39.另外,如上所述,本发明也可以被实施为一种计算机存储介质,在其中存储有用于使计算机执行如图1所示的方法10的程序。在此,作为计算机存储介质,能采用盘类(例如,磁盘、光盘等)、卡类(例如,存储卡、光卡等)、半导体存储器类(例如,rom、非易失性存储器等)、带类(例如,磁带、盒式磁带等)等各种方式的计算机存储介质。
40.在可适用的情况下,可以使用硬件、软件或硬件和软件的组合来实现由本发明提供的各种实施例。而且,在可适用的情况下,在不脱离本发明的范围的情况下,本文中阐述的各种硬件部件和/或软件部件可以被组合成包括软件、硬件和/或两者的复合部件。在可适用的情况下,在不脱离本发明的范围的情况下,本文中阐述的各种硬件部件和/或软件部件可以被分成包括软件、硬件或两者的子部件。另外,在可适用的情况下,预期的是,软件部件可以被实现为硬件部件,以及反之亦然。
41.根据本发明的软件(诸如程序代码和/或数据)可以被存储在一个或多个计算机存储介质上。还预期的是,可以使用联网的和/或以其他方式的一个或多个通用或专用计算机和/或计算机系统来实现本文中标识的软件。在可适用的情况下,本文中描述的各个步骤的顺序可以被改变、被组合成复合步骤和/或被分成子步骤以提供本文中描述的特征。
42.提供本文中提出的实施例和示例,以便最好地说明按照本发明及其特定应用的实施例,并且由此使本领域的技术人员能够实施和使用本发明。但是,本领域的技术人员将会知道,仅为了便于说明和举例而提供以上描述和示例。所提出的描述不是意在涵盖本发明的各个方面或者将本发明局限于所公开的精确形式。

技术特征:
1.一种用于跨应用视图内嵌的方法,其特征在于,所述方法包括以下步骤:响应于宿主应用的启动,将所述宿主应用创建的表层对象传递至内嵌应用,其中所述内嵌应用基于片段控件实现用户界面管理;在所述内嵌应用中创建虚拟显示对象和双屏异显对象,并将所述内嵌应用的视图通过所述虚拟显示对象和双屏异显对象绘制在所述表层对象上,以在所述宿主应用中显示所述内嵌应用的视图,其中所述双屏异显对象的创建包括:将所述双屏异显对象作为所述片段控件的宿主,并利用所述双屏异显对象对所述片段控件进行加载和管理。2.根据权利要求1所述的方法,其中,还包括:在所述宿主应用中添加纹理视图控件并设置所述纹理视图控件的参数,其中所述纹理视图控件指定所述内嵌应用的视图显示区域,并且所述表层对象内嵌在所述纹理视图控件中。3.根据权利要求2所述的方法,其中,还包括:响应于所述宿主应用的启动,将所述纹理视图控件的参数发送至所述内嵌应用,其中所述参数包括所述内嵌应用在所述宿主应用中的视图显示区域的宽度、高度和分辨率。4.根据权利要求3所述的方法,其中,将所述纹理视图控件的参数发送至所述内嵌应用以及将所述宿主应用创建的表层对象传递至内嵌应用包括:响应于所述宿主应用的调用请求,所述内嵌应用对所述宿主应用的服务进行绑定;以及在绑定成功之后,所述宿主应用将所述表层对象以及所述纹理视图控件的参数发送至所述内嵌应用。5.根据权利要求2至4中任一项所述的方法,其中,在所述内嵌应用中创建虚拟显示对象和双屏异显对象包括:基于所述对象以及所述纹理视图控件的参数创建所述虚拟显示对象,以及利用所述虚拟显示对象创建与所述虚拟显示对象相关联的双屏异显对象;将所述内嵌应用的视图通过所述虚拟显示对象和双屏异显对象绘制在所述表层对象上包括:利用所述双屏异显对象将所述内嵌应用的视图渲染到所述虚拟显示对象中,以及所述虚拟显示对象将渲染内容绘制到由所述宿主应用提供的表层对象上。6.根据权利要求1所述的方法,其中,将所述双屏异显对象作为所述片段控件的宿主,并利用所述双屏异显对象对所述片段控件进行加载和管理包括:创建片段控制器对象并在创建过程中指定所述双屏异显对象作为所述片段控件的宿主;以及通过实现相应的生命周期函数,使得所述片段控件的生命周期状态与所述双屏异显对象的生命周期状态一致。7.根据权利要求6所述的方法,其中,通过实现相应的生命周期函数,使得所述片段控件的生命周期状态与所述双屏异显对象的生命周期状态一致包括:当所述双屏异显对象被初始化时,对应地执行所述片段控件的初始化;当所述双屏异显对象由不可见变为可见状态时,对应地使所述片段控件由不可见变为
可见状态;当所述双屏异显对象完全不可见时,对应地使所述片段控件完全不可见;以及当所述双屏异显对象被销毁时,对应地执行所述片段控件的销毁。8.根据权利要求2所述的方法,其中,还包括:将所述纹理视图控件接收到的用户交互事件跨进程传递至所述内嵌应用。9.根据权利要求8所述的方法,其中,将所述纹理视图控件接收到的用户交互事件跨进程传递至所述内嵌应用包括:响应于所述纹理视图控件接收到用户交互事件,将所述用户交互事件的类型和坐标传递至所述内嵌应用的双屏异显对象。10.一种计算机系统,所述电子设备其特征在于,包括:存储器;处理器;以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序的运行使得根据权利要求1-9中任一项所述的方法被执行。11.一种计算机存储介质,其特征在于,所述计算机存储介质包括指令,所述指令在运行时执行根据权利要求1-9中任一项所述的方法。

技术总结
本发明涉及跨应用视图内嵌领域,并且更具体地涉及一种用于跨应用视图内嵌的方法、实施该方法的计算机系统和实施该方法的计算机存储介质。该方法包括:响应于宿主应用的启动,将宿主应用创建的表层对象传递至内嵌应用,其中内嵌应用基于片段控件实现用户界面管理;在内嵌应用中创建虚拟显示对象和双屏异显对象,并将内嵌应用的视图通过虚拟显示对象和双屏异显对象绘制在表层对象上,以在宿主应用中显示内嵌应用的视图,其中双屏异显对象的创建包括:将双屏异显对象作为片段控件的宿主,并利用双屏异显对象对片段控件进行加载和管理。用双屏异显对象对片段控件进行加载和管理。用双屏异显对象对片段控件进行加载和管理。


技术研发人员:雷金亮
受保护的技术使用者:蔚来汽车科技(安徽)有限公司
技术研发日:2023.06.30
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐