一种android显示系统动态设置调整的方法与流程

文档序号:14910896发布日期:2018-07-10 23:22阅读:219来源:国知局

本发明涉及一种android显示系统动态设置调整的方法,其特征在于系统不需要重启就能改变设备显示方向。通过算法实现系统软件设置和硬件显示方向动态调整,改变显示设备的显示方向,比如横屏竖屏、反向横屏竖屏。



背景技术:

在现有技术中,android显示系统在开机初始化以后就固定下来了,虽然可以通过修改参数来配置,但是仍然需要重启设备来重新初始化整个显示系统,增加设备部署时间或者无法满足需要动态调整的应用场景。



技术实现要素:

本发明提供一种android显示系统动态设置调整的方法,实现基于Android系统设备渲染原理和输入设备匹配机制,根据当前显示系统的方向,通过算法实现系统软件设置和硬件显示方向动态调整,改变显示设备的显示方向,比如横屏竖屏、反向横屏竖屏。

为了达到发明目的,本发明采用如下技术方案:

一种android显示系统动态设置调整的方法,使系统按动态调整显示系统;

所述显示系统动态设置,通过算法实现系统软件设置和硬件显示方向动态调整,改变显示设备的显示方向,比如横屏竖屏、反向横屏竖屏。

一种android显示系统动态设置调整的方法,包括以下步骤:

步骤一,获取当前硬件层渲染设备显示方向和当前设备目标显示信息;

步骤二,使用如下方法计算新的参数:

① 硬件渲染为横屏,软件目标显示参数不变;

② 硬件渲染为竖屏,软件目标为横屏的,参数映射为反向横屏;

③ 硬件渲染为竖屏,软件目标为竖屏的,参数映射为反向竖屏;

④ 硬件渲染为竖屏,软件目标为反向横屏的,参数映射为横屏;

⑤ 硬件渲染为竖屏,软件目标为反向竖屏的,参数映射为竖屏;

⑥ 硬件渲染为反向横屏,软件目标为横屏的,参数映射为反向横屏;

⑦ 硬件渲染为反向横屏,软件目标为竖屏的,参数映射为反向竖屏;

⑧ 硬件渲染为反向横屏,软件目标为反向横屏的,参数映射为横屏;

⑨ 硬件渲染为反向横屏,软件目标为反向竖屏的,参数映射为竖屏;

⑩ 硬件渲染为反向竖屏,软件目标为横屏的,参数映射为横屏;

⑪ 硬件渲染为反向竖屏,软件目标为竖屏的,参数映射为竖屏;

⑫ 硬件渲染为反向竖屏,软件目标为反向横屏的,参数映射为反向横屏;

⑬ 硬件渲染为反向竖屏,软件目标为反向竖屏的,参数映射为反向竖屏。

步骤三,将新的参数传递给WindowManagerService,刷新整个系统window界面。

步骤四, 将新的参数传递给surfaceflinger,更新渲染层方向。

步骤五, 将新的参数传递给InputReader,更新输入设备(例如触摸屏)的匹配方向。

步骤六, 保存新的参数到system.prop,以备在设备重启之后保留设置值。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明方法的流程框图。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

Linux内核提供了统一的framebuffer显示驱动,设备节点/dev/graphics/fb*或者/dev/fb*,以fb0表示第一个显示屏。Android的HAL层提供了Gralloc,分为fb和gralloc两个设备。设备fb负责打开内核中的framebuffer以及提供post、setSwapInterval等操作,设备gralloc则负责管理帧缓冲区的分配和释放。上层只能通过Gralloc访问帧缓冲区,这样一来就实现了有序的封装保护。由于OpenGL ES是一个通用的函数库,在不同的平台系统上需要被“本地化”——即把它与具体平台上的窗口系统建立起关联,这样才能保证它正常工作。从FramebufferNativeWindow就是将OpenGL ES在Android平台上本地化窗口。OpenGL或者OpenGL ES 更多的只是一个接口协议,实现上既可以采用软件,也能依托于硬件。EGL通过读取egl.cfg配置文件,根据用户的设定来动态加载libagl(软件实现)或者libhgl(硬件实现)。然后上层才可以正常使用各种glXXX接口。SurfaceFlinger中持有一个GraphicPlane成员变量mGraphicPlanes来描述“显示屏”;GraphicPlane类中又包含了一个DisplayHardware对象实例(mHw)。DisplayHardware在初始化时还将调用eglInitialize、eglCreateWindowSurface等接口,并利用EGL完成对OpenGLES环境的搭建。由于本方案的目标是实现动态调整,设备不经过重新启动。所以硬件渲染层并不会在配置新参数以后重新初始化。这样就需要通过系统在软件层面上进行处理,实现新的显示方向。

下面为一个android显示系统动态设置调整的方法:

(1)获取当前硬件层渲染设备显示方向和当前设备目标显示信息。在设备初始化过程中,通过在底层和应用层中添加相关代码,截取设备信息并保存;

(2)根据硬件参数和软件目标参数计算出系统当前需要映射的显示参数。使用如下方法计算新的参数;

①硬件渲染为横屏,软件目标显示参数不变;

②硬件渲染为竖屏,软件目标为横屏的,参数映射为反向横屏;

③硬件渲染为竖屏,软件目标为竖屏的,参数映射为反向竖屏;

④硬件渲染为竖屏,软件目标为反向横屏的,参数映射为横屏;

⑤硬件渲染为竖屏,软件目标为反向竖屏的,参数映射为竖屏;

⑥硬件渲染为反向横屏,软件目标为横屏的,参数映射为反向横屏;

⑦硬件渲染为反向横屏,软件目标为竖屏的,参数映射为反向竖屏;

⑧硬件渲染为反向横屏,软件目标为反向横屏的,参数映射为横屏;

⑨硬件渲染为反向横屏,软件目标为反向竖屏的,参数映射为竖屏;

⑩硬件渲染为反向竖屏,软件目标为横屏的,参数映射为横屏;

⑪硬件渲染为反向竖屏,软件目标为竖屏的,参数映射为竖屏;

⑫硬件渲染为反向竖屏,软件目标为反向横屏的,参数映射为反向横屏;

⑬硬件渲染为反向竖屏,软件目标为反向竖屏的,参数映射为反向竖屏;

(3)将新的参数传递给WindowManagerService,刷新整个系统window界面;

(4)将新的参数传递给surfaceflinger,更新渲染层方向;

(5)将新的参数传递给InputReader,更新输入设备(例如触摸屏)的匹配方向;

(6)保存新的参数到system.prop,以备在设备重启之后保留设置值。

本发明能够实现android显示系统动态设置调整的功能。

上述说明示出并描述了本发明的优选实施例,如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

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