一种在Linux上缩放安卓应用窗口的方法及装置与流程

文档序号:35208780发布日期:2023-08-24 02:15阅读:73来源:国知局
一种在Linux上缩放安卓应用窗口的方法及装置与流程

本发明涉及在linux系统上兼容安卓应用,尤其涉及一种在linux上缩放安卓应用窗口的方法及装置。


背景技术:

1、为满足用户实际使用需要,桌面操作系统上的原生应用软件通常支持软件窗口自由缩放,而手机上的安卓应用一般以固定的屏幕尺寸大小显示。从桌面操作系统兼容安卓应用生态的角度来看,不仅是为了在桌面操作系统上运行安卓应用,也要保证具备良好的用户体验,提供接近桌面用户的操作习惯。为此,在linux兼容安卓应用的环境上,需要满足用户对于安卓应用窗口能够自由缩放的需求。android n平台开始引入多窗口功能,支持分屏模式、画中画模式和自由窗口freeform模式三种模式,用户可以同时打开和看到多个安卓应用的界面,其中的自由窗口freeform模式可以实现窗口的自由拖动和修改大小。现有linux上安卓兼容方案对窗口的缩放支持有以下三种情况:不支持缩放、支持等比例缩放、支持横/纵向和对角自由缩放,其中支持横/纵向和对角自由缩放的方式是基于freeform的多窗口模式实现,但是自由窗口freeform模式尚不成熟,存在较多问题,容易导致窗口缩放时出现画面显示异常问题,降低用户体验感。

2、中国发明专利“一种安卓运行环境内安卓应用窗口的缩放优化方法”(专利号:cn113986446a)。该专利公开了一种安卓运行环境内安卓应用窗口的缩放优化方法,能够在自由缩放安卓应用窗口时使安卓应用窗口与linux应用窗口大小同步改变。该发明可以提升用户体验,但该专利应用的xdroid使用的安卓应用多窗口显示方案基于自由窗口freeform,仍无法解决窗口缩放过程中出现的显示异常问题。

3、中国发明专利“窗口缩放方法、装置、终端及计算机可读存储介质”(专利号:cn109254821a)。该专利公开了窗口缩放方法、装置、终端及计算机可读存储介质,根据监测到的缩放触发事件对自由窗口freeform进行缩放处理,实现自动调整显示窗口的大小,满足用户对窗口显示大小的缩放需求,提高了自由窗口freeform显示的灵活性,但该专利不是应用在桌面操作系统兼容安卓系统的环境中,仍然没有解决由于freeform模式自身不成熟带来的缩放过程中出现的显示异常问题。


技术实现思路

1、针对上述问题,本发明提供一种在linux上缩放安卓应用窗口的方法及装置,应用在linux兼容android系统的运行环境下,安卓应用基于虚拟屏多窗口,结合freeform模式启动应用的方式,实现多窗口安卓应用窗口尺寸实时跟随linux窗口尺寸变化进行调整。

2、为实现上述目的,本发明公开了一种在linux上缩放安卓应用窗口的方法,包括以下步骤:

3、步骤s1、安卓以容器方式运行在linux中,linux和安卓之间通过ipc通信模块进行数据交互,linux发送启动安卓应用请求时将应用包名、显示器分辨率、显示的窗口尺寸通过ipc通信模块发送至安卓侧;

4、步骤s2、安卓侧接收到应用启动请求后,根据linux侧发送过来的上述参数,为应用创建一个与显示器分辨率尺寸大小一样的虚拟屏,根据显示窗口尺寸大小设定应用的栈边界bound值,bound值以虚拟屏左上角为原点,以freeform模式启动应用到虚拟屏上,通过图形渲染模块在虚拟屏左上角按照bound值显示对应大小的安卓图像,surfaceflinger调用显示控制程序将返回的显存句柄、虚拟屏id、显示画面宽高通过ipc通信模块发送至linux侧;

5、步骤s3、linux侧在安卓应用启动成功后,创建对应的图形显示窗口,通过图形合成模块按照设定的窗口尺寸对虚拟屏画面进行裁剪、合成和送显;

6、步骤s4、对linux侧的图形显示窗口执行缩放操作,在鼠标释放、触摸缩放结束或窗口尺寸动态调整过程中,将捕获到的当前窗口尺寸通过ipc通信模块发送至安卓侧;

7、步骤s5、安卓侧接收到尺寸调整信息后,由应用管理模块更新应用栈边界bound值,bound值以虚拟屏左上角为原点,图形渲染模块根据该栈边界bound信息进行图像渲染,完成渲染后由surfaceflinger调用显示控制程序将返回的显存句柄、虚拟屏id、显示画面宽高通过通信模块发送至linux侧;

8、步骤s6、linux侧的图形合成模块解析显存地址,使用缩放后的窗口大小对虚拟屏上的图像从左上角开始重新进行裁剪,合成最新的图像画面后绘制显示,实现安卓图像的动态调整。

9、进一步的,所述步骤s2的具体实现步骤为:

10、步骤s21:解析虚拟屏尺寸和窗口尺寸;

11、步骤s22:虚拟屏管理模块根据显示器分辨率尺寸大小创建一个相同大小的虚拟屏,并生成一个唯一的虚拟屏id;

12、步骤s23:应用启动管理模块appmanager设定应用启动模式为freeform模式,同时设定栈边界bound值,根据唯一的虚拟屏id将该应用启动到虚拟屏上;

13、步骤s24:zygote进程创建新的安卓应用进程,应用的显示区域大小为设定的栈边界bound值大小;

14、步骤s25:surfaceflinger进程从硬件抽象层hal中的gralloc中申请分辨率尺寸大小的显存空间后返回其地址,并由图形渲染模块根据窗口尺寸大小将图像渲染到虚拟屏的左上角,完成图像的渲染;

15、步骤s26:surfaceflinger进程调用显示控制程序,将gralloc申请的显存地址、唯一id号、应用包名、窗口长宽通过ipc通信模块发送至linux侧。

16、进一步的,所述步骤s3的具体实现步骤为:

17、步骤s31:linux侧接收到安卓应用启动成功的信号后,根据返回的唯一id号、包名和窗口长宽创建一个指定尺寸的图形窗口,linux图形窗口将虚拟屏的唯一id号与安卓内的虚拟屏一一对应;

18、步骤s32:linux侧图形窗口根据返回的显存地址,解析地址并得到显存中存放的虚拟屏窗口图像数据,使用opengl es接口对图像数据按实际窗口大小进行裁剪、合成和显示。

19、进一步的,所述步骤s4的具体实现步骤为:

20、步骤s41:图形窗口程序通过设置事件监听器,监听窗口尺寸的变化;

21、步骤s42:使用鼠标或触摸操作对linux侧的安卓应用图形窗口进行横向、纵向或对角方式进行窗口的自由缩放;

22、步骤s43:窗口程序监听鼠标释放事件、触摸缩放结束事件和尺寸动态变化数据,将当前窗口尺寸大小通过ipc通信模块发送至安卓侧,请求更新安卓图像大小。

23、进一步的,所述步骤s5的具体实现步骤为:

24、步骤s51:安卓侧应用管理模块appmanager解析由linux侧发送过来的窗口尺寸;

25、步骤s52:appmanager根据更新的窗口尺寸通过atms中resizetask函数更新窗口栈边界bound值;

26、步骤s53:安卓侧surfaceflinger进程根据新的栈边界bound值大小对显示图像大小进行调整,并渲染到虚拟屏的左上角;

27、步骤s54:surfaceflinger进程调用显示控制程序,将gralloc申请的显存地址、唯一id号、应用包名、窗口长宽通过ipc通信模块发送至linux侧,让linux图形窗口进行图像显示的更新处理。

28、进一步的,所述步骤s6的具体实现步骤为:

29、步骤s61:linux侧接收到安卓应用图形尺寸调整完成的信号后,根据返回的唯一id号、包名找到对应的linux侧图形窗口;

30、步骤s62:linux侧图形窗口根据安卓返回的显存地址,解析地址并得到显存中存放的虚拟屏窗口图像数据,使用opengl es对图像数据按实际窗口大小进行裁剪、合成和显示,完成安卓图形自由缩放操作。

31、一种在linux上缩放安卓应用窗口的装置,包括:

32、虚拟屏管理模块,用于启动应用时虚拟屏的创建和关闭应用时虚拟屏的销毁;

33、ipc通信模块,用于所述linux侧和安卓侧之间的实时消息通信通道;

34、图形渲染模块,应用于安卓侧,若安卓侧支持直接访问gpu硬件,则安卓侧根据获取的图形绘制请求去使用opengl es调用gpu生成图像数据;若安卓侧不支持直接访问gpu硬件,则安卓侧将获取的图形绘制请求发送给linux侧,由linux侧完成图像渲染并返回图像显存信息;

35、图形合成模块:应用于linux侧,该模块接收到安卓侧发送的显存数据信息后,解析得到显存地址,再通过opengl es将显存数据进行裁剪,得到指定大小的显示画面;

36、界面显示模块,应用于linux侧,通过调用图形合成模块,实现安卓图形显示到linux图形窗口上。

37、本发明的一种在linux上缩放安卓应用窗口的方法及装置的有益效果为:通过虚拟屏和freeform模式结合的方式,实现了在linux兼容安卓环境下对安卓应用多窗口化界面的自由缩放,并动态保持安卓应用画面的清晰度和ui布局的协调性,弥补等比例缩放存在的画面模糊、操作体验弱等不足,解决了一些安卓兼容产品使用安卓freeform模式实现多窗口和自由缩放方案而出现的显示异常问题,充分彰显产品灵活性,满足linux用户个性化需求,让安卓应用实现真正桌面化操作,为用户提供了更好的操作体验和视觉体验。

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