一种桌面系统上安卓应用相关文件的操作方法与流程

文档序号:31406936发布日期:2022-09-03 07:16阅读:54来源:国知局
一种桌面系统上安卓应用相关文件的操作方法与流程

1.本发明属于桌面操作系统上运行移动应用的开发技术领域,具体涉及一种桌面系统上安卓应用相关文件的操作方法。


背景技术:

2.运行在桌面操作系统上的安卓兼容环境是一种在桌面操作系统上运行安卓应用的技术,对丰富桌面操作系统应用生态有着重要的意义。现有安卓兼容环境研究实践中,典型的产品有桌面系统安卓兼容环境xdroid,xdroid通过xdroidserver与xdroidui的配合实现了安卓应用与桌面操作系统的兼容,其中,xdroidserver为运行在安卓系统中的安卓应用兼容服务,xdroidui为运行在桌面操作系统上的安卓应用显示单元。
3.现有的微信、qq、钉钉等社交类安卓应用一般会提供分享文件或图片等功能,当用户接收到他人分享的文件或图片时通常会采用查看或保存的操作,对于运行在安卓系统中或运行在现有安卓兼容环境中的安卓应用来说,当用户执行查看操作时,安卓系统或安卓兼容环境会通过发送intent消息的方式,启动运行在安卓系统或安卓兼容环境内的支持打开文件或图片操作的安卓应用执行查看操作,当存在多个支持打开文件或图片操作的安卓应用时往往还需要用户手动选择实际使用的安卓应用,此外,当用户执行保存操作时,安卓系统或安卓兼容环境仅支持将文件或图片保存在安卓系统或安卓兼容环境所在的目录中。
4.综上所述,在现有安卓兼容环境中当用户操作他人分享的文件或图片时,由于通常情况下安卓应用所提供的文件或图片编辑功能与桌面系统应用提供的功能相比往往易用性较差,因此导致用户无法获得与使用桌面系统应用相同的感受,此外,由于文件或图片仅能保存在安卓兼容环境所在的目录因此会为用户后续对文件或图片的操作带来不便,从而降低了用户的体验。


技术实现要素:

5.有鉴于此,本发明提供了一种桌面系统上安卓应用相关文件的操作方法,能够实现桌面系统应用程序直接完成对运行在安卓兼容环境内安卓应用相关文件的处理。
6.本发明提供的一种桌面系统上安卓应用相关文件的操作方法,包括以下步骤:步骤1、用户在桌面系统中使用安卓应用,当安卓应用显示界面的布局发生改变时,安卓兼容环境获取安卓应用当前显示界面中的热点区域,并将热点区域及其中所包含文件的全路径更新到热点区域列表中;当安卓应用显示界面中弹出新窗口时,提取新窗口区域,并将新窗口区域保存到新窗口区域列表中;当弹出的新窗口被关闭时,将新窗口区域从新窗口区域列表中删除;当用户关闭安卓应用时,清空热点区域列表和新窗口区域列表;步骤2、当用户使用鼠标点击安卓应用的显示界面时,阻止将鼠标按下事件发送至安卓兼容环境,若鼠标按下事件为鼠标左键点击,则记录鼠标按下事件中的鼠标按下位置,执行步骤3;否则将鼠标按下事件发送至安卓兼容环境,结束本流程;步骤3、获取下一次鼠标事件,若下一次鼠标事件为鼠标释放事件,则记录其中的
鼠标释放位置,若鼠标释放位置与鼠标按下位置相同则执行步骤4,若鼠标释放位置与鼠标按下位置不同则结束本流程;若下一次鼠标事件为鼠标移动事件,则记录鼠标移动位置执行步骤6;步骤4、若鼠标释放位置位于新窗口区域列表所保存的新窗口区域内,则将鼠标按下事件与鼠标释放事件先后发送至安卓兼容环境后结束本流程;若鼠标释放位置位于新窗口区域之外,且鼠标释放位置位于热点区域内则丢弃鼠标按下事件及鼠标释放事件后执行步骤5;若鼠标释放位置位于新窗口区域之外且鼠标释放位置位于热点区域之外则结束本流程;步骤5、获取热点区域对应的文件全路径,选用桌面系统应用程序根据文件全路径打开文件,结束本流程;步骤6、若鼠标移动位置位于热点区域列表所保存的热点区域内,则不改变鼠标图标,执行步骤7;若鼠标移动位置位于热点区域列表所保存的热点区域之外,则将鼠标图标修改为拖拽文件时的图标,执行步骤7;步骤7、监测鼠标事件,若下一次鼠标事件为鼠标移动事件,则获取鼠标移动位置后,执行步骤6;若下一次鼠标事件为鼠标释放事件,且鼠标释放位置位于热点区域外,则获取鼠标释放位置所在的窗口,获取窗口进程名,若窗口进程名为文件管理器,则将文件保存在文件管理器的当前目录中;若窗口进程名为非文件管理器,则将热点区域列表中文件的全路径作为窗口进程的参数执行窗口进程完成打开文件的操作。
7.进一步地,所述步骤6中所述将鼠标图标修改为拖拽文件时的图标的条件为当鼠标移动位置与鼠标按下位置的差值大于阈值时。
8.进一步地,所述阈值为20像素。
9.进一步地,所述步骤7中所述将文件保存在文件管理器的当前目录中的方式为:获取窗口所指向的目录,判断目录中是否存在具有相同文件名的文件,如果没有则将文件保存到目录中,否则弹出提示窗提示用户覆盖或重命名文件。
10.进一步地,所述新窗口区域包括包含popupwindow悬浮框或toast消息框的窗口区域。
11.进一步地,所述步骤1中所述安卓兼容环境获取安卓应用当前显示界面中的热点区域的方式为:采用机器学习方法预先分析安卓应用显示界面,得到包含文件的界面区域的特征,当安卓应用显示界面的布局发生改变时,截取当前显示界面后,采用图像识别的方式根据特征分析当前显示界面,若匹配则确认当前显示界面中包含热点区域;再获取热点区域的矩形框坐标,并从热点区域中提取出所包含的文件名。
12.进一步地,所述步骤1中所述安卓兼容环境获取安卓应用当前显示界面中的热点区域的方式,包括以下步骤:步骤1.1、获取安卓应用当前显示界面内根节点视图的视图树,获取视图树中设置为可见的线性布局;步骤1.2、遍历线性布局,当线性布局中同时包含文本视图和图像视图时,提取文本视图中的文本内容及图像视图中的图片,若文本内容的格式符合预先定义的格式且图片与预先定义的图片相近,则执行步骤1.3;否则结束本流程;步骤1.3、根据步骤1.2中获取的文本内容,在安卓应用对应的目录中查找是否存
在具有与文本内容相同的文件名的文件,如果存在则线性布局所在容器为热点区域,记录文件的全路径及热点区域的矩形框坐标;否则结束本流程。
13.进一步地,所述步骤1中所述的安卓兼容环境获取安卓应用当前显示界面中的热点区域中的安卓兼容环境为安卓应用兼容服务xdroidserver。
14.有益效果:本发明通过在桌面系统中监测安卓应用显示界面的变化,在显示界面变化时从中获取热点区域或新窗口区域,再通过对用户鼠标操作的分析以及鼠标位置与热点区域或新窗口区域的位置关系判断用户将执行的操作行为,由此确定桌面系统的响应行为,从而实现了采用桌面系统应用程序对安卓应用内相关文件的直接处理,缩短了用户操作响应时间,提高了处理效率,进而改善了用户体验。
附图说明
15.图1为本发明提供的一种桌面系统上安卓应用相关文件的操作方法的流程图。
具体实施方式
16.下面结合附图并举实施例,对本发明进行详细描述。
17.本发明提供的一种桌面系统上安卓应用相关文件的操作方法,其核心思想是:通过在桌面系统中监测安卓应用显示界面的变化,在显示界面变化时从中获取热点区域或新窗口区域,再通过对用户鼠标操作的分析以及鼠标位置与热点区域或新窗口区域的位置关系判断用户将执行的操作行为,由此确定桌面系统的响应行为。
18.本发明提供了一种桌面系统上安卓应用相关文件的操作方法,流程如图1所示,具体包括以下步骤:步骤1、用户在桌面系统中使用安卓应用,当安卓应用显示界面的布局发生改变时,安卓兼容环境获取安卓应用当前显示界面中的热点区域,并将热点区域及区域内所包含文件的全路径更新到热点区域列表中;当安卓应用显示界面中弹出新窗口时,提取新窗口区域,并将新窗口区域保存到新窗口区域列表中;当弹出的新窗口被关闭时,将新窗口区域从新窗口区域列表中删除;当用户关闭安卓应用时,清空热点区域列表和新窗口区域列表。
19.其中,热点区域是指包含文件的安卓应用显示界面区域,本发明中采用热点区域所对应的矩形框的坐标进行表示。热点区域列表用于保存热点区域对应的矩形框坐标以及热点区域内所包含文件的文件全路径。本发明中,安卓应用显示界面中弹出的新窗口是指popupwindow悬浮框或toast消息框等类型的窗口,这类窗口弹出时会悬浮于安卓应用显示界面的上层,会遮盖部分的热点区域,因此需要进行特别处理。
20.上述获取安卓应用当前显示界面中的热点区域的方式为基于图片识别的方式获取,具体来说:采用机器学习等方法预先分析安卓应用显示界面,得到包含文件的界面区域的特征,当安卓应用显示界面的布局发生改变时,截取当前显示界面后,采用图像识别的方式根据特征分析当前显示界面,若匹配则确认当前显示界面中包含热点区域;再获取热点区域的矩形框坐标,并从热点区域中提取出所包含的文件名。
21.此外,还以可以基于热点区域的布局特征获取安卓应用当前显示界面中的热点区
域,具体包括:步骤1.1、获取安卓应用当前显示界面内根节点视图的视图树,获取视图树中设置为可见的线性布局(linearlayout)。
22.步骤1.2、遍历所有的线性布局,当线性布局中同时包含文本视图(textview)和图像视图(imageview)时,提取文本视图中的文本内容及图像视图中的图片,若文本内容的格式符合预先定义的格式且图片与预先定义的图片相近,则初步认为线性布局所在容器为热点区域,执行步骤1.3;否则结束本流程。
23.步骤1.3、根据步骤1.2中获取的文本内容,在安卓应用对应的目录中查找是否存在具有与文本内容相同的文件名的文件,如果存在则认为线性布局所在容器为热点区域,记录文件的全路径及热点区域的矩形框坐标;否则结束本流程。
24.其中,预先定义的格式如“.doc”、“.pdf”等,预先定义的图片如安卓应用中通用的word文件图标、pdf文件图标等。
25.此外,安卓应用兼容服务xdroidserver可采用rpc通信方式将热点区域列表及新窗口区域列表发送给安卓应用显示单元xdroidui,xdroidui将热点区域列表中文件的访问权限修改为当前桌面系统用户可读写的状态,由此每当安卓应用显示界面发生变化都能使安卓应用显示单元获取当前最新的热点区域列表及新窗口区域列表信息。
26.步骤2、当用户使用鼠标点击安卓应用的显示界面时,安卓应用显示单元拦截将鼠标按下事件发送至安卓兼容环境的操作,获取鼠标按下事件,若鼠标按下事件为鼠标左键点击,则记录鼠标按下事件中的鼠标按下位置,执行步骤3;否则执行将鼠标按下事件发送至安卓兼容环境的操作,结束本流程。
27.在安卓系统中鼠标事件包括鼠标移动事件、鼠标按下事件及鼠标释放事件。
28.步骤3、安卓应用显示单元获取下一次鼠标事件,拦截将鼠标事件发送至安卓兼容环境的操作,若下一次鼠标事件为鼠标释放事件,则记录鼠标释放事件中的鼠标释放位置,若鼠标释放位置与鼠标按下位置相同则执行步骤4,若鼠标释放位置与鼠标按下位置不同则结束本流程;若下一次鼠标事件为鼠标移动事件,则记录鼠标移动位置执行步骤6。
29.步骤4、若新窗口区域列表不为空且鼠标释放位置位于新窗口区域列表所保存的新窗口区域内,则将鼠标按下事件与鼠标释放事件先后发送至安卓兼容环境后结束本流程;若新窗口区域列表不为空且鼠标释放位置位于新窗口区域列表所保存的新窗口区域之外,则判断鼠标释放位置是否位于热点区域列表所保存的热点区域内,若鼠标释放位置位于热点区域内则丢弃鼠标按下事件及鼠标释放事件后执行步骤5,若鼠标释放位置位于热点区域之外则结束本流程。
30.步骤5、获取热点区域对应的文件全路径,选用相应的桌面系统应用程序根据文件全路径打开文件,结束本流程。
31.步骤6、若鼠标移动位置位于热点区域列表所保存的热点区域内,则不改变鼠标图标,执行步骤7;若鼠标移动位置位于热点区域列表所保存的热点区域之外或鼠标移动位置与鼠标按下位置的差值大于阈值,则将鼠标图标修改为拖拽文件时的图标,执行步骤7。
32.步骤7、监测鼠标事件,若下一次鼠标事件为鼠标移动事件,则获取鼠标移动事件中鼠标的坐标信息为鼠标移动位置后,执行步骤6;若下一次鼠标事件为鼠标释放事件,则获取鼠标释放位置,若鼠标释放位置位于热点区域外,则获取鼠标释放位置所在的窗口,获
取窗口进程名,若窗口进程名为文件管理器或桌面,则获取窗口所指向的目录,判断目录中是否存在具有相同文件名的文件,如果没有则将文件保存到目录中,否则弹出提示窗提示用户覆盖或重命名文件;若窗口进程名为非文件管理器,则将热点区域列表中文件的全路径作为窗口进程的参数执行窗口进程,例如,执行“窗口进程名+文件路径”的指令使窗口进程完成打开文件的操作。
33.实施例:本实施例中,通过对安卓系统进行系统级的修改实现了本发明提供的一种桌面系统上安卓应用相关文件的操作方法,具体包括以下步骤:s1、用户在桌面系统中使用安卓应用,当安卓应用显示界面的布局发生改变时,安卓应用兼容服务xdroidserver获取安卓应用当前显示界面中的热点区域或新窗口区域,以感知用户是否尝试处理文件或图片,并将热点区域列表及新窗口区域列表发送至安卓应用显示单元xdroidui,xdroidui将热点区域列表中文件的访问权限修改为当前桌面系统用户可读写的状态。
34.感知用户是否尝试处理文件或图片的方式之一是,在安卓兼容环境内通过修改framework接口,实现在安卓应用通过发送intent消息的方式通知其他安卓应用时确定用户正在尝试打开文件或图片,并从intent消息中获取文件或图片的全路径。然而,采用上述方式感知用户的操作会导致交互速度减慢。
35.另一种方式是通过判断安卓应用当前显示界面(activity)中是否包含分享文件界面区域,即热点区域,以感知用户是否尝试处理文件或图片。基于图片识别的方式获取,具体来说,由于不同安卓应用中用于显示接收的文件和图片的界面结构通常具有相似性,例如,一般情况下热点区域内左上角的位置显示文件名、左下角的位置显示文件大小、右侧位置显示文件图标等,这些相似点即为热点区域的特征,在decorview第一次完成所有view的构建和布局后,通过拦截onmeasure和layoutchildren函数截取decorview的内容并与特征进行匹配,若匹配成功则说明当前区域为热点区域。
36.基于热点区域的布局特征获取安卓应用当前显示界面中的热点区域的方式,包括以下步骤:s1.1、获取安卓应用当前显示界面中decorview的view tree,自上而下获取所有可见的linearlayout,即属性visible的取值设置为true的linearlayout,令获取到的linearlayout的总数为n,令linearlayout的编号n取值为1。
37.s1.2、获取第n个linearlayout,若linearlayout同时包含了textview和imageview则执行s1.3;否则若n小于n则令n自加1后执行s1.2,若n不小于n则执行s1.5。
38.s1.3、获取textview内记载的文本,判断文本格式是否满足正则表达式“.doc”、“.pdf”等,同时另一个textview内记载的文本是否满足正则表达式“数字b/kb/mb/gb”,若满足则将带有“.doc”、“.pdf”等后缀的文本作为文件名,再执行s1.4;否则,若n小于n则令n自加1后执行s1.2,否则执行s1.5。
39.s1.4、采用s1.3中获取的文件名在安卓应用所在的文件目录,如“/data/packagename”中查找是否存在具有相同文件名的文件,如果存在则记录该文件的全路径为 filefullpath,以及热点区域的位置信息包括左顶点位置和宽高信息,将热点区域的位置信息保存为filerect,若n小于n则令n自加1后执行s1.2,若n不小于n则执行s1.5;如果不存
在,若n小于n则令n自加1后执行s1.2,否则执行s1.5。
40.s1.5、保存filefullpath和filerect的集合为fileinfo,建立filefullpath与filerect之间的映射关系。
41.s1.6、当安卓应用显示界面的布局发生变化,即layoutchildren再次被调用时,执行s1.1。
42.s2、当用户使用鼠标点击安卓应用的显示界面时,xdroidui检测到鼠标点击事件,若鼠标按下事件为鼠标左键事件,则保存鼠标的坐标信息为鼠标按下位置,记为presspos;若鼠标按下事件为非鼠标左键事件,则结束本流程。
43.s3、xdroidui等待获取下次鼠标事件,若下次鼠标事件为鼠标释放事件,则保存鼠标释放事件中鼠标的坐标信息为鼠标释放位置,记为releasepos,如果presspos与releasepos相同则执行s4,如果不同则认为用户执行的是取消点击操作,不做响应结束本流程;若下次鼠标事件为鼠标移动事件,则保存鼠标移动事件中鼠标的坐标信息为鼠标移动位置,记为movepos执行s6。
44.s4、将s3中获取的releasepos与s1中建立的fileinfo集合中的filerect进行比较,若releasepos位于filerect中,例如可采用qt提供的方法qrect.contains(qpoint)即可判断releasepos与filerect的位置关系,则丢弃获取的鼠标按下及释放事件,即不将事件信息发送至xdroidserver以使xdroidserver不响应用户打开文件或图片的操作,根据filerect与filefullpath的映射关系将filefullpath保存为currentpath后执行s5;若releasepos位于filerect之外,则结束本流程。其中,currentpath为文件在安卓系统下的全路径。
45.s5、根据文件名中的后缀,判断文件类型,选择桌面系统中对应的应用程序打开文件或图片。
46.具体来说,首先将currentpath转换为桌面系统中路径,再通过文件的后缀名选择对应的linux系统或windows系统应用程序打开文件或图片。例如,采用qt提供的qdesktopservices::openurl(qurl(path))方法可执行打开文件或图片的操作,其中,path为linux系统中文件的访问路径。
47.s6、比较movepos与fileinfo集合中的filerect,若movepos位于filerect内或movepos与presspos的差值小于阈值,则无法判断用户是否需要拖拽保存文件,则不改变鼠标图标,执行s7;若movepos位于filerect之外,则改变鼠标图标为拖拽文件的状态,执行s7。
48.其中,movepos与presspos的差值的阈值可设置为20像素。改变鼠标图标为拖拽文件的状态的方式为:采用qt的方法使得鼠标变为拖拽文件的状态,即创建qmimedata mimedata保存currentpath,构造qdrag,调用setmimedata(mimedata)、sethotspot(qpoint(x, y))、exec(qt::copyaction, qt::copyaction),即可实现该效果。
49.s7、监测鼠标事件,若下一次鼠标事件为鼠标移动事件,则保存鼠标移动事件中鼠标的坐标信息为movepos,执行s6;若下一次鼠标事件为鼠标释放事件,则记录鼠标释放事件中鼠标的坐标信息为releasepos,若releasepos位于filerect之外,则触发dragenterevent,识别释放位置的窗口是否为文件管理器窗口或系统桌面,如果是文件管理器窗口或系统桌面则获取当前窗口所指向的文件目录,判断该文件目录中是否已存在具
有相同文件名的文件,如不存在则保存文件,如存在则弹出提示窗提示用户选择执行覆盖或重命名的操作;如果不是文件管理器窗口或系统桌面,则获取当前窗口对应的进程名称作为窗口进程,将热点区域列表中文件的全路径作为窗口进程的参数执行窗口进程,例如,执行“窗口进程名+文件路径”的指令使窗口进程完成打开文件的操作;若releasepos位于filerect之内则不做响应结束本流程。
50.综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1