显示安卓2D应用图像的方法、装置及一种头戴设备与流程

文档序号:13215089阅读:168来源:国知局
技术领域本发明涉及计算机技术领域,特别涉及无失真地显示安卓2D应用的方法、装置及一种头戴设备。

背景技术:
近年来,VR(VirtualReality,虚拟现实)技术和AR(AugmentedReality,增强现实)技术不断发展,考虑到安卓系统的广泛应用性和开源性,基于安卓平台的一体式VR设备和AR设备的需求越来越迫切。但是在VR设备和AR设备都需要同时向用户的左眼和右眼提供画面,这使得现有的大部分安卓应用,尤其是2D应用无法直接应用到VR系统和AR系统中。这就造成在VR系统和AR系统尚不存在统一标准的情况下,相应设备上的内容缺乏。如果简单地将显示安卓2D应用的显示设备的屏幕划分为左侧屏幕和右侧屏幕,并将待显示的2D应用的图像分别绘制在左侧屏幕和右侧屏幕上时,又会出现图像失真的问题。

技术实现要素:
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的无失真地显示安卓2D应用的方法、装置及一种头戴设备。依据本发明的一个方面,提供了一种显示安卓2D应用图像的方法,包括:将待显示该安卓2D应用图像的屏幕宽度修改为显示设备的屏幕本身宽度的一半;获取待显示的安卓2D应用基于修改后的屏幕宽度的无失真图像;调用安卓系统中负责显示合成的SurfaceFlinger模块,分别在显示设备的左侧屏幕和右侧屏幕建立网格;使用OpenGL将所述待显示的安卓2D应用的无失真图像的纹理分别绘制到所述左侧屏幕和右侧屏幕各自的网格上进行显示。可选地,所述将待显示该安卓2D应用图像的屏幕宽度修改为显示设备的屏幕本身宽度的一半包括:调用安卓系统的窗口管理服务WindowManagerService,修改待显示该2D应用的显示设备对应的Display对象的DisplayContent类中的屏幕尺寸为屏幕高度*(屏幕宽度/2)。可选地,所述获取待显示的安卓应用的无失真图像包括:调用安卓系统的窗口管理服务WindowManagerService将修改后的屏幕尺寸返回给待显示的安卓2D应用,并获取该安卓2D应用基于修改后的屏幕尺寸自适应得到的无失真图像。依据本发明的另一方面,提供了一种显示安卓2D应用图像的装置,包括:屏幕尺寸修改单元,用于将待显示该安卓2D应用图像的屏幕宽度修改为屏幕本身宽度的一半;无失真图像获取单元,用于获取待显示的安卓2D应用基于修改后的屏幕宽度的无失真图像;网格建立单元,用于调用安卓系统中负责显示合成的SurfaceFlinger模块,分别在显示设备的左侧屏幕和右侧屏幕建立网格;绘制显示单元,用于使用OpenGL将所述待显示的安卓2D应用的无失真图像的纹理分别绘制到所述左侧屏幕和右侧屏幕各自的网格上进行显示。可选地,所述屏幕尺寸修改单元,用于调用安卓系统的窗口管理服务WindowManagerService,修改待显示该2D应用的显示设备对应的Display对象的DisplayContent类中的屏幕尺寸为屏幕高度*(屏幕宽度/2)。可选地,所述无失真图像获取单元,用于调用安卓系统的窗口管理服务WindowManagerService将修改后的屏幕尺寸返回给待显示的安卓2D应用,并获取该安卓2D应用基于修改后的屏幕尺寸自适应得到的无失真图像。依据本发明的又一方面,提供了一种头戴设备,其特征在于,所述头戴设备包括如上述任一项所述的显示安卓2D应用图像的装置。由上述可知,本发明的技术方案,将待显示该安卓2D应用图像的屏幕宽度修改为显示设备的屏幕本身宽度的一半,然后进一步获取待显示的安卓2D应用基于修改后的屏幕宽度的无失真图像,之后再通过调用安卓系统中负责显示合成的SurfaceFlinger模块,分别在显示设备的左侧屏幕和右侧屏幕建立网格,接着使用OpenGL将所述待显示的安卓2D应用的无失真图像的纹理分别绘制到所述左侧屏幕和右侧屏幕各自的网格上进行显示。由于现有技术中,待显示的安卓2D应用的图像在绘制到显示设备的屏幕上时,生成的是对应整个屏幕尺寸的图像,而实际显示时需要将其分别显示在屏幕的左侧屏幕和右侧屏幕上,因此就需要对图像进行缩放,从而产生失真;而本技术方案中获取的是待显示的安卓2D应用基于修改后的屏幕宽度的图像,因此不需要进行缩放从而不产生失真,解决了利用现有技术将安卓2D应用的图像绘制到VR设备或AR设备等具有多个屏幕的显示设备时会出现图像失真的问题,可以使得用户观看更优质的画面,对于安卓2D应用的图片、尤其是文字的显示效果提升非常明显,并且应用该技术方案的虚拟现实一体机可以兼容海量现有的安卓2D应用,在使用这类VR设备或AR设备时,用户可以以更愉悦的心情体验更丰富的内容,而且该技术方案的成本低,方法简单,适于实用。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了根据本发明一个实施例的一种显示安卓2D应用图像的方法的流程图;图2示出了根据本发明一个实施例的一种显示安卓2D应用图像的方法的原理图;图3示出了根据本发明一个实施例的一种显示安卓2D应用图像的装置的结构示意图;图4示出了根据本发明一个实施例的一种头戴设备的结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。图1示出了根据本发明一个实施例的一种显示安卓2D应用图像的方法的流程图,如图1所示,该方法包括:步骤S110,将待显示该安卓2D应用图像的屏幕宽度修改为显示设备的屏幕本身宽度的一半。步骤S120,获取待显示的安卓2D应用基于修改后的屏幕宽度的无失真图像。步骤S130,调用安卓系统中负责显示合成的SurfaceFlinger模块,分别在显示设备的左侧屏幕和右侧屏幕建立网格。步骤S140,使用OpenGL将待显示的安卓2D应用的无失真图像的纹理分别绘制到左侧屏幕和右侧屏幕各自的网格上进行显示。在安卓系统中,将纹理绘制到屏幕上时,需要对整个屏幕建立网格,例如左下坐标为(-1,-1),左上坐标为(1,1),中心坐标为(0,0)。在将本实施例应用于VR系统或AR系统中时,需要利用屏幕分别为左眼和右眼提供显示,因此将屏幕分为左侧屏幕和右侧屏幕,在左侧屏幕和右侧屏幕上显示的图像应当是独立的。在具体实施中,可以考虑在进行左侧屏幕的绘制时,将屏幕网格右侧的基准线移至屏幕的中心线建立新的网格,从而绘制出的左侧屏幕的图像便是不失真的、适于左侧屏幕的图像,类似地可以绘制右侧屏幕。具体地,可以使用OpenGL(OpenGraphicsLibrary,开放图形库)进行无失真图像的纹理的绘制。可见,图1所示的方法,将待显示该安卓2D应用图像的屏幕宽度修改为显示设备的屏幕本身宽度的一半,然后进一步获取待显示的安卓2D应用基于修改后的屏幕宽度的无失真图像,之后再通过调用安卓系统中负责显示合成的SurfaceFlinger模块,分别在显示设备的左侧屏幕和右侧屏幕建立网格,接着使用OpenGL将所述待显示的安卓2D应用的无失真图像的纹理分别绘制到所述左侧屏幕和右侧屏幕各自的网格上进行显示。该技术方案解决了利用现有技术将安卓2D应用的图像绘制到VR设备或AR设备等具有多个屏幕的显示设备时会出现图像失真的问题,可以使得用户观看更优质的画面,对于安卓2D应用的图片、尤其是文字的显示效果提升非常明显,并且应用该技术方案的虚拟现实一体机可以兼容海量现有的安卓2D应用,在使用这类VR设备或AR设备时,用户可以以更愉悦的心情体验更丰富的内容,而且该技术方案的成本低,方法简单,适于实用。在本发明的一个实施例中,图1所示的方法中,将待显示该安卓2D应用图像的屏幕宽度修改为显示设备的屏幕本身宽度的一半包括:调用安卓系统的窗口管理服务WindowManagerService,修改待显示该2D应用的显示设备对应的Display对象的DisplayContent类中的屏幕尺寸为屏幕高度*(屏幕宽度/2)。在安卓系统中,会为每个应用该系统的显示设备分配一个独立的Display对象,而窗口管理服务WindowManagerService则会为这个Display对象新建一个DisplayContent类,该类中就包含了与相应的Display对象相关的窗口等信息。例如,在该类中,mInitialDisplayWidth、mInitialDisplayHeight、mInitialDisplayDensity对应保存了屏幕的宽度、高度和密度。那么在本实施例中,可以将mInitialDisplayWidth的值修改为原显示设备屏幕宽度的二分之一,例如,原屏幕尺寸为800*480,则修改后的屏幕尺寸为400*480。在本发明的一个实施例中,上述方法中,获取待显示的安卓应用的无失真图像包括:调用安卓系统的窗口管理服务WindowManagerService将修改后的屏幕尺寸返回给待显示的安卓2D应用,并获取该安卓2D应用基于修改后的屏幕尺寸自适应得到的无失真图像。安卓系统中的应用如果需要在显示设备上进行显示,往往需要通过获取显示设备的屏幕尺寸,据此生成与该屏幕尺寸相适应的图像,这种方法称为安卓应用对屏幕的自适应。现有技术中,如果2D应用需要直接应用到VR系统和AR系统的场景中。将待显示的2D应用的图像分别绘制在左侧屏幕和右侧屏幕上时,由于提供给2D应用的屏幕尺寸为原屏幕尺寸,就会出现下述情景中的问题:例如,原屏幕尺寸为800*480,由于该屏幕需要划分为左侧屏幕和右侧屏幕,分别为用户的左眼和右眼提供独立的图像,因此,实际应用需要显示的屏幕尺寸为400*480。而由于2D应用根据获取到的屏幕尺寸,自适应得到的图像是适应800*480尺寸的屏幕的,要将其完整地显示在400*480的屏幕上时,就必须将图像缩小,即至少要缩小到400*240(即屏幕宽度和高度都变为自适应生得到图像的二分之一)。这样就会产生图像失真的问题,而且在屏幕的上下都留有黑边。而在本实施例中由于调用安卓系统的窗口管理服务WindowManagerService将修改后的屏幕尺寸返回给待显示的安卓2D应用,即2D应用根据修改后的屏幕尺寸得到的图像是适应400*480尺寸的屏幕的,因此2D应用可以在整个左侧屏幕和整个右侧屏幕上进行显示,不仅不存在图像失真,而且对屏幕的利用率也更高。图2示出了根据本发明一个实施例的一种显示安卓2D应用图像的方法的原理图。如图2所示,安卓应用层的2D应用通过与安卓框架层的窗口管理服务WindowManagerService进行交互,获得待显示该2D应用的显示设备对应的Display对象的DisplayContent类中的修改后的屏幕尺寸,再将根据该修改后的屏幕尺寸自适应得到的图像,通过窗口管理服务WindowManagerService,进一步调用SurfaceFlinger模块将2D应用的图像绘制到显示设备的左侧屏幕和右侧屏幕上。图3示出了根据本发明一个实施例的一种显示安卓2D应用图像的装置的结构示意图,如图3所示,无失真地显示安卓2D应用的装置300包括:屏幕尺寸修改单元310,用于将待显示该安卓2D应用图像的屏幕宽度修改为屏幕本身宽度的一半。无失真图像获取单元320,用于获取待显示的安卓2D应用基于修改后的屏幕宽度的无失真图像。网格建立单元330,用于调用安卓系统中负责显示合成的SurfaceFlinger模块,分别在显示设备的左侧屏幕和右侧屏幕建立网格。绘制显示单元340,用于使用OpenGL将待显示的安卓2D应用的无失真图像的纹理分别绘制到左侧屏幕和右侧屏幕各自的网格上进行显示。可见,图3所示的装置,将待显示该安卓2D应用图像的屏幕宽度修改为显示设备的屏幕本身宽度的一半,然后进一步获取待显示的安卓2D应用基于修改后的屏幕宽度的无失真图像,之后再通过调用安卓系统中负责显示合成的SurfaceFlinger模块,分别在显示设备的左侧屏幕和右侧屏幕建立网格,接着使用OpenGL将所述待显示的安卓2D应用的无失真图像的纹理分别绘制到所述左侧屏幕和右侧屏幕各自的网格上进行显示。该技术方案解决了利用现有技术将安卓2D应用的图像绘制到VR设备或AR设备等具有多个屏幕的显示设备时会出现图像失真的问题,可以使得用户观看更优质的画面,对于安卓2D应用的图片、尤其是文字的显示效果提升非常明显,并且应用该技术方案的虚拟现实一体机可以兼容海量现有的安卓2D应用,在使用这类VR设备或AR设备时,用户可以以更愉悦的心情体验更丰富的内容,而且该技术方案的成本低,方法简单,适于实用。在本发明的一个实施例中,图3所示的装置中,屏幕尺寸修改单元310,用于调用安卓系统的窗口管理服务WindowManagerService,修改待显示该2D应用的显示设备对应的Display对象的DisplayContent类中的屏幕尺寸为屏幕高度*(屏幕宽度/2)。在本发明的一个实施例中,上述装置中,无失真图像获取单元320,用于调用安卓系统的窗口管理服务WindowManagerService将修改后的屏幕尺寸返回给待显示的安卓2D应用,并获取该安卓2D应用基于修改后的屏幕尺寸自适应得到的无失真图像。需要说明的是,上述各装置实施例的具体实施方式与前述对应方法实施例中的具体实施方式相同,在此不再赘述。图4示出了根据本发明一个实施例的一种头戴设备的结构示意图,如图4所示,头戴设备400包括如上述任一实施例中的无失真地显示安卓2D应用的装置300。该头戴设备可以让用户在兼容2D的虚拟现实一体机中体验更优质的画面,愉悦使用心情,大大丰富内容。综上所述,本发明的技术方案,将待显示该安卓2D应用图像的屏幕宽度修改为显示设备的屏幕本身宽度的一半,然后进一步获取待显示的安卓2D应用基于修改后的屏幕宽度的无失真图像,之后再通过调用安卓系统中负责显示合成的SurfaceFlinger模块,分别在显示设备的左侧屏幕和右侧屏幕建立网格,接着使用OpenGL将所述待显示的安卓2D应用的无失真图像的纹理分别绘制到所述左侧屏幕和右侧屏幕各自的网格上进行显示。该技术方案解决了利用现有技术将安卓2D应用的图像绘制到VR设备或AR设备等具有多个屏幕的显示设备时会出现图像失真的问题,可以使得用户观看更优质的画面,对于安卓2D应用的图片、尤其是文字的显示效果提升非常明显,并且应用该技术方案的虚拟现实一体机可以兼容海量现有的安卓2D应用,在使用这类VR设备或AR设备时,用户可以以更愉悦的心情体验更丰富的内容,而且该技术方案的成本低,方法简单,适于实用。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1