在Linux兼容安卓系统上进行左右分屏的方法转让专利
申请号 : CN202210134802.6
文献号 : CN114185508B
文献日 : 2022-04-26
发明人 : 彭韬 , 杨硕 , 李翔 , 黄晟 , 黄彩龙 , 马超 , 游远 , 赵坤 , 谢辉军 , 杨陈博寰
申请人 : 麒麟软件有限公司
摘要 :
权利要求 :
1.在Linux兼容安卓系统上进行左右分屏的方法,其特征在于,所述方法包括以下步骤:
选择Android系统镜像文件并对所述Android系统镜像文件做预处理;
Linux系统上运行docker容器里的所述Android系统;
所述Linux系统创建Android应用显示视窗;
所述Android系统接收Linux系统的启动命令,创建虚拟屏并绑定所述Android应用显示视窗;
所述Android系统启动所述Android应用至所述虚拟屏;
所述Android系统对所述Android应用所在的所述虚拟屏进行左右分屏;
在内存中添加所述Android应用的界面跳转匹配规则;
所述Android应用跳转界面时,根据所述界面跳转匹配规则来选择启动至左屏或右屏。
2.根据权利要求1所述的在Linux兼容安卓系统上进行左右分屏的方法,其特征在于,所述选择Android系统镜像文件并对所述Android系统镜像文件做预处理,包括以下步骤:选择支持分屏模式方案的所述Android系统平台进行系统定制;
将所述Android系统上原物理屏分屏模式的方案移植至所述虚拟屏。
3.根据权利要求1所述的在Linux兼容安卓系统上进行左右分屏的方法,其特征在于,所述Linux系统上运行docker容器里的所述Android系统,包括以下步骤:所述Linux系统上使用docker加载所述Android系统的镜像,让所述Linux系统和所述Android系统共享同一所述Linux系统内核;
所述容器中启动所述Android系统环境。
4.根据权利要求1所述的在Linux兼容安卓系统上进行左右分屏的方法,其特征在于,所述Android系统对所述Android应用所在的所述虚拟屏进行左右分屏,包括以下步骤:获取所述虚拟屏中所述Android应用界面所在的任务栈的任务ID;
根据所述任务ID,执行Android Activity任务管理服务类中的方法setTaskWindowingModeSplitScreenPrimary,所述Android系统将对当前所述虚拟屏进行分屏显示。
5.根据权利要求1所述的在Linux兼容安卓系统上进行左右分屏的方法,其特征在于,所述Android系统解析所述Android应用内的资源文件,并保存与预设定左右屏幕的界面跳转匹配规则至内存中,包括以下步骤:解析所述Android应用内存在的所述界面跳转匹配规则的资源文件;
对无所述界面跳转匹配规则的资源文件的所述Android应用做预设定规则;
将解析的所述界面跳转匹配规则或所述预设定规则保存至内存中。
6.根据权利要求1所述的在Linux兼容安卓系统上进行左右分屏的方法,其特征在于,所述Android应用跳转界面时,根据所述界面跳转匹配规则来选择启动至左屏或右屏,包括以下步骤:
在Activity启动流程中添加拦截器;
所述拦截器在每次Android应用界面跳转时对所述Activity启动流程进行拦截;
再将左屏当前所述Activity启动流程与预启动的所述Activity启动流程按所述界面跳转匹配规则进行匹配;
匹配符合所述界面跳转匹配规则的,则在启动意图中设置意图标识,所述Android应用界面启动至右屏;
反之,所述Android应用界面则按所述当前Activity启动流程,启动至左屏。
说明书 :
在Linux兼容安卓系统上进行左右分屏的方法
技术领域
背景技术
为目前使用最广泛的应用生态。Android基于Linux内核发展而来,是目前移动终端市场中
市场份额最高的Linux类操作系统,在移动终端领域具有极好的生态环境;Windows系统占
据着PC市场的最大份额,其作为美国闭源操作系统,在信息网络安全方面存在巨大安全隐
患;而Linux操作系统,其作为Android的前身,由于开发人员数目和市场份额的限制,发展
较为缓慢,生态环境长期处于不良状态,一直不见起色。随着信息技术的飞速发展,国家对
信息安全的重视程度日益提升,国内基于开源Linux操作系统的自主操作系统日益发展壮
大,但Linux操作系统生态应用的严重缺乏仍旧是困扰Linux操作系统真正推向市场的一大
痛点。
台和应用软件群体,对于解决Linux操作系统目前的窘境具有一定的参考价值。
性和便利,使得移动端的丰富应用很有可能成功运行在PC端。近年来,Android应用生态在
Linux操作系统上的兼容支持成为了研究热点,国内外有许多研究人员尝试将Android运行
环境迁移到Linux类计算机平台以实现Android应用生态在Linux操作系统上兼容支持的效
果,各种兼容技术衍生而出,其中就包括Google的 ARC(App Runtime for Chrome)技术、虚
拟机和模拟器技术、Anbox(Android in a Box)项目等,这些技术将PC端和移动端进行融
合,成功将Android应用生态迁移到Linux上来,极大地推动了Linux应用生态的发展,很大
程度上弥补了Linux应用缺乏的诟病,方便了Linux操作系统用户的日常办公、娱乐等需求,
也加快了Linux操作系统走向消费市场的步伐,但它们都还存在着无法忽视的用户体验问
题,包括稳定性、易用性、功能完备性等,导致这块技术领域没有显著的提升。
观,相较于原生的运行程序会显得突兀;如果Linux端窗口程序强行将显示效果改为与原生
运行程序一样,也就是长宽比与显示器差不多,众所周知,大部分的Android应用为适应手
机终端,都是竖屏显示的,如果Linux端改变窗口长宽,会导致Android应用不适配这种分辨
率,导致应用内图标、图像拉升;再者,PC操作还和手机终端操作一样,是单操作场景,这样
显示器大屏显示的优势就无法发挥,如果是应用窗口内左右分屏,创造两个场景,这样再处
理另一场景时,则无需中断当前场景的操作。结合以上两点,为充分发挥现有硬件性能,提
升PC上运行Android应用的显示效果以及用户的使用体验。
发明内容
用内图标、图像被拉升变形等缺陷;以及存在着Android应用在Linux PC端操作上只能和手
机终端操作一样,为单操作场景,不能进行多场景操作的缺陷,导致了Linux PC端显示器大
屏显示的优势无法发挥,影响用户使用体验的技术问题。
系统上运行docker容器里的所述Android系统;所述Linux系统创建Android应用显示视窗;
所述Android系统接收Linux系统的启动命令,创建虚拟屏并绑定所述Android应用显示视
窗;所述Android系统启动所述Android应用至所述虚拟屏;所述Android系统对所述
Android应用所在的所述虚拟屏进行左右分屏;在内存中添加所述Android应用的界面跳转
匹配规则; 所述Android应用跳转界面时,根据所述界面跳转匹配规则来选择启动至左屏
或右屏。
Android系统上原物理屏分屏模式的方案移植至所述虚拟屏。
述Android系统共享同一所述Linux系统内核;在所述docker容器中启动所述Android系统
环境。
任务ID,执行Android Activity任务管理服务类中的方法setTaskWindowingModeSplitSc
reenPrimary,所述Android系统将对当前所述虚拟屏进行分屏显示。
述界面跳转匹配规则的资源文件;对无所述界面跳转匹配规则的资源文件的所述Android
应用做预设定规则;将解析的所述界面跳转匹配规则或所述预设定规则保存至内存中。
Android应用界面跳转时对所述Activity启动流程进行拦截;再将左屏当前所述Activity
启动流程与预启动的所述Activity启动流程按所述界面跳转匹配规则进行匹配;匹配符合
所述界面跳转匹配规则的,则在启动意图中设置意图标识,所述Android应用界面启动至右
屏;反之,所述Android应用界面则按所述当前Activity启动流程,启动至左屏。
理;Linux系统上运行docker容器里的所述Android系统;所述Linux系统创建Android应用
显示视窗;所述Android系统接收Linux系统的启动命令,创建虚拟屏并绑定所述Android应
用显示视窗;所述Android系统启动所述Android应用至所述虚拟屏;所述Android系统对所
述Android应用所在的虚拟屏进行左右分屏;在内存中添加所述Android应用的界面跳转匹
配规则; 所述Android应用跳转界面时,根据所述界面跳转匹配规则来选择启动至左屏或
右屏;通过以上方法,为运行在Linux系统上Android系统兼容环境中的Android应用提供一
种左右分屏的机制,将Android系统物理屏分屏模式的方案进行改造,将其移植到自创建的
虚拟屏当中,使Android应用启动时,可以实现横屏显示并且左右分屏的效果,提供了更好
的显示和交互体验,更加符合Linux PC端宽屏的显示效果,也避免了在Linux PC端下操作
Android应用时,遇到多个场景要处理时,需中断当前场景的情况,进而减少场景被中断和
恢复的繁琐过程,从而提升了用户的使用效率,使Android应用的使用体验有了革命性的突
破。
附图说明
本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他
的附图。
具体实施方式
发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在
没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下分屏,这就属于物理屏幕的分屏模式。将物理屏幕的分屏模式方案移植到虚拟屏幕上,具
体步骤,第一步,需屏蔽原物理分屏流程中对于屏幕ID的限制,这样做是为了后续调用分屏
接口传入虚拟屏幕ID参数时,能走物理分屏流程;第二步,移除分屏之后中轴线(原物理屏
分屏之后存在于左右分屏中间的线,左右拖动修改左右屏幕大小),由于市面上大部分应用
分辨率的固定限制,左右拖动将会导致应用的不兼容。当Linux系统发送启动Android应用
指令时,Android系统创建虚拟屏,Linux系统将创建显示视窗绑定到虚拟屏;Android系统
将解析应用内的资源文件,如果存在界面跳转匹配规则的资源文件,则保存至内存中,如果
不存在,则预设定规则至内存中;当Android应用界面启动完成时,执行分屏模式接口,当用
户操作Android应用界面跳转时,Android系统对于改造之后的Activiy启动流程进行规则
过滤拦截,拦截成功,则设置意图标识启动至右屏,反之,则走原流程启动左屏;进而更加符
合Linux PC端宽屏的显示效果,也避免了在Linux PC端下操作Android应用时,遇到多个场
景要处理时,需中断当前场景的情况,进而减少场景被中断和恢复的繁琐过程,从而提升了
用户的使用效率,使Android应用的使用体验有了革命性的突破。
理屏分屏模式的方案移植至虚拟屏;通过以上方法,对于Android系统平台的镜像,应选择
支持分屏模式方案的版本进行镜像,且研究Android系统分屏模式的流程,并对流程中对屏
幕ID的限制进行屏蔽,将framework(框架)层构造的虚拟屏幕分屏的接口供应用层使用,进
而提高虚拟屏幕分屏的效率。
Android系统的镜像,让Linux系统和Android系统共享同一Linux系统内核;容器中再启动
Android系统环境;先创建docker容器加载上述改造之后的Android系统镜像,使得Android
系统共用Linux系统端的内核,并启动Android系统,Linux系统执行图形显示程序,去渲染
虚拟屏幕中的图像数据。
户界面的单一屏幕)任务管理服务类(ActivityTaskManagerService)中的方法setTaskWi
ndowingModeSplitScreenPrimary(设置当前任务的窗口模式为分屏模式,将当前任务作为
主屏显示),Android系统将对当前虚拟屏幕进行分屏显示;通过以上方法,解决了虚拟屏幕
的分屏显示问题,提高Android应用在虚拟屏上进行左右分屏的效率。
规则的资源文件;对无界面跳转匹配规则的资源文件的Android应用做预设定规则;界面跳
转匹配规则类似于键值对,键(Key)则表示左屏当前界面,值(value)则表示预启动的界面;
将解析后和预设定完的界面跳转匹配规则保存至内存中;通过以上方法,提高界面跳转匹
配规则的设定和保存效率,进而提高Android应用跳转界面实现左右分屏的效率。
以用来交互为了完成某项任务,通俗点为一个Android界面)启动流程中添加拦截器;拦截
器在每次Android应用界面跳转时对Activity启动流程进行拦截;再将左屏当前Activity
启动流程与预启动的Activity启动流程按界面跳转匹配规则进行匹配;匹配符合界面跳转
匹配规则的,则在启动意图中设置意图标识,Android应用界面启动至右屏;反之,Android
应用界面则按所述当前Activity启动流程,启动至左屏;通过以上方法,提高了Android应
用跳转界面实现左右分屏的效率。
两个不同Activity显示,用户可以同时处理多个事件,有效地避免了处理多个事件时,当前
事件被中断的情况,提高用户的使用效率,发挥了Linux PC端显示器大屏显示多个Android
应用界面的优势。
屏则获取当前虚拟屏幕分配的DisplayId,通过DisplayId调用之前封装好的分屏接口,分
屏完成之后Android系统会创建两个栈split‑screen‑primary和split‑screen‑
secondary,分别对应着左屏和右屏,加上屏幕本身的栈fullscreen,这个对应的就是全屏
的栈,其中界面的跳转就是Android系统创建的Task在栈中作进栈、出栈以及移栈的操作。
转,则用左屏界面与欲启动的界面进行规则匹配,匹配成功则添加启动参数,启动至右屏,
反之,则走原启动流程;进而更加符合PC端宽屏的显示效果,也避免了在Linux PC端下操作
Android应用时,遇到多个场景要处理时,需中断当前场景的情况,进而减少场景被中断和
恢复的繁琐过程,从而提升了用户的使用效率,使Android应用的使用体验有了革命性的突
破。
述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些
修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。