公开/公告号CN113220136A
专利类型发明专利
公开/公告日2021-08-06
原文格式PDF
申请/专利权人 北京麟卓信息科技有限公司;
申请/专利号CN202110459884.7
发明设计人 温研;
申请日2021-04-27
分类号G06F3/023(20060101);G06F3/0481(20130101);G06F3/0488(20130101);G06F9/451(20180101);
代理机构
代理人
地址 100085 北京市海淀区西三旗昌临801号院27号3层310、312
入库时间 2023-06-19 12:07:15
技术领域
本发明属于在桌面操作系统上运行移动应用的开发技术领域,具体涉及基于窗口布局感知的键盘映射方案自动切换方法及装置。
背景技术
Linux或Windows等桌面操作系统Android运行环境是一种在Linux或Windows操作系统上运行Android应用(App)的技术,该技术对丰富操作系统应用生态具有非常重要的意义。
使用Android运行环境在桌面操作系统上运行Android应用时,由于PC计算机的显示器往往不支持触摸,通常使用鼠标点击模拟触摸事件。但是,对于复杂的Android应用窗口操作,例如游戏应用中的多点快速触摸,就需要用键盘的不同的按键对应到应用窗口的不同位置,即按下某一键,就相当于点击了应用窗口的某个位置。
现有的键盘映射是采用预先定义映射规则的方式实现,即通过预先定义键盘按键与屏幕位置的对应关系实现映射。但是,当用户在应用窗口中切换使用界面时,例如用户使用“微信”应用时在聊天界面和朋友圈界面之间切换,界面的布局会发生变化,再采用之前设定的映射关系将键盘映射到屏幕将会导致映射的错位,从而导致用户操作错位,现有的方式需要用户手动切换映射方式,这为用户操作带来了不便,降低了用户体验。
发明内容
有鉴于此,本发明提供了基于窗口布局感知的键盘映射方案自动切换方法及装置,实时获取应用窗口显示界面的布局,根据布局匹配对应的键盘按键映射方案实现键盘按键映射方案的自动切换。
本发明提供的基于窗口布局感知的键盘映射方案自动切换方法,具体包括以下步骤:
建立桌面系统的键盘按键与安卓应用窗口之间的键盘映射方案,所述键盘映射方案包括所述安卓应用窗口对应的包名、活动名称、按键键码、对应的映射位置,及所述安卓应用窗口的布局树;当监测到所述安卓应用窗口的显示界面发生变化时,获取当前显示界面的当前布局树;选择所述键盘映射方案中具有与所述当前布局树相同布局树的键盘映射方案,作为当前键盘映射方案;将桌面系统的键盘映射方案替换为所述当前键盘映射方案。
进一步地,所述布局树是以应用界面的ViewRootImpl为根节点、以嵌套的视图为叶子节点的递归树,所述叶子节点的属性包括所述叶子节点对应的视图的类名及父类名。
进一步地,所述监测到所述安卓应用窗口的显示界面发生变化的方式为修改Android系统的Window类和View类,在创建窗口、销毁窗口、创建视图或销毁视图时获取当前应用界面的当前布局树,再将所述当前布局树发送至所述桌面系统。
进一步地,所述选择所述键盘映射方案中具有与所述当前布局树相同布局树的键盘映射方案作为当前键盘映射方案的过程为:采用树搜索算法对所述键盘映射方案中的布局树与所述当前布局树进行匹配,匹配成功的键盘映射方案即为当前键盘映射方案。
本发明提供的基于窗口布局感知的键盘映射方案自动切换装置,包括键盘映射方案配置单元、应用窗口布局树获取单元、应用窗口监听单元及映射方案切换单元;
所述键盘映射方案配置单元,用于配置桌面系统的键盘按键与安卓应用窗口之间的键盘映射方案,所述键盘映射方案包括所述安卓应用窗口对应的包名、活动名称、按键键码、对应的映射位置,及应用窗口的布局树;
所述应用窗口布局树获取单元,位于安卓系统中,用于获取当前应用窗口的布局树;
所述应用窗口监听单元,位于安卓系统中,用于监测当前安卓应用窗口显示界面,当所述显示界面产生创建窗口、销毁窗口、创建视图或销毁视图事件时,则调用所述应用窗口布局树获取单元获取当前显示界面的当前布局树,并将所述当前布局树发送至所述映射方案切换单元;
所述映射方案切换单元,用于根据获取到的所述当前布局树选择所述键盘映射方案中具有与所述当前布局树相同布局树的键盘映射方案,作为当前键盘映射方案;将桌面系统的键盘映射方案替换为所述当前键盘映射方案。
进一步地,所述应用窗口监听单元与所述映射方案切换单元之间采用RPC通信方式传输数据。
进一步地,所述映射方案切换单元根据获取到的所述当前布局树选择所述键盘映射方案中具有与所述当前布局树相同布局树的键盘映射方案的方式为:采用树搜索算法对所述键盘映射方案中的布局树与所述当前布局树进行匹配。
有益效果:
本发明针对每种显示界面预设键盘按键映射方案,并在键盘按键映射方案中增加了Android应用窗口中显示界面的布局属性,通过实时获取Android应用窗口中显示界面的布局,通过布局的匹配实时切换键盘按键映射方案,效提高了桌面平台上安卓应用中操作的便利性,显著提升了用户体验。
附图说明
图1为本发明提供的基于窗口布局感知的键盘映射方案自动切换方法的流程图。
图2为本发明提供的基于窗口布局感知的键盘映射方案自动切换装置的结构图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供的基于窗口布局感知的键盘映射方案自动切换方法及装置,其核心思想是:针对每种显示界面预设键盘按键映射方案,并在键盘按键映射方案中增加了Android应用窗口中显示界面的布局属性,通过实时获取Android应用窗口中显示界面的布局树,通过布局树的匹配实时切换适合的键盘按键映射方案。根据本发明的实现机制,本发明更适合非游戏(基于OpenGL ES)类的Android应用,因为此类应用支持提取当前Android应用窗口的Window/View的对象布局及坐标。
本发明提供的基于窗口布局感知的键盘映射方案自动切换方法,流程如图1所示,包括以下步骤:
步骤1、配置键盘按键映射方案。键盘按键映射方案用于说明当前键盘上的按键与Android应用窗口之间的对应关系,具体包括:当前应用的包名、活动名称(ActivityName)、键盘按键的键码(KeyCode)、按键映射位置及应用窗口的布局树。通常来说,不同的应用界面的布局树也不尽相同,因此,布局树可以作为应用窗口显示界面的身份标识。布局树是指以应用界面中的ViewRootImpl为根节点、以各级嵌套的视图(View)为叶子节点的递归树,叶子节点的属性包括类名(当前View的类名)和父类名(当前View所继承的父类的名称)。布局树既可以采用XML格式的文件来描述,也可以采用Json格式的文件来描述。应用窗口的布局树(View树)可采用现有方法获取。
现有技术中,任意品牌的键盘上的按键都具有唯一的扫描码(ScanCode),该扫描码由操作系统转换后,与系统内确定的键码(KeyCode)相对应,因此,在操作系统层处理键盘相关的任务时,仅需关注键盘按键的键码(KeyCode)即可。按键映射位置可采用该位置在应用显示界面中对应的位置坐标进行描述,记为:(x,y)。
本发明中,键盘映射方案的配置可采用可视化方式进行配置。
步骤2、启动键盘映射后,当Android运行环境监测到Android应用窗口显示界面发生变化时,例如,创建窗口、销毁窗口、创建View或销毁View等,Android系统获取Android应用窗口显示界面的布局树,并将布局树发送至桌面系统。
具体来说,监测Android应用窗口显示界面的变化的方式包括:修改Android系统现有的Window类和View类的构造函数和析构函数,增加在创建窗口、销毁窗口、创建View或销毁View时获取新生成的应用界面的布局树,并将该布局树发送至桌面系统的功能。
骤3、桌面系统采用树搜索算法,将从步骤2中获取到的当前显示界面的当前布局树与各键盘按键映射方案中所记录的布局树进行对比,选择具有与当前布局树相同布局树的键盘按键映射方案,将该方案作为新的键盘按键映射方案重新启动键盘映射。
根据本发明提供的基于窗口布局感知的键盘映射方案自动切换方法,本发明设计了基于窗口布局感知的键盘映射方案自动切换装置,装置的结构如图2所示,包括键盘映射方案配置单元、应用窗口布局树获取单元、应用窗口监听单元及映射方案切换单元。
其中,键盘映射方案配置单元,用于配置键盘按键与Android应用窗口界面位置之间的对应关系,具体包括:当前Android应用的包名、活动名称(Activity Name)、键盘按键的键码(KeyCode)、按键映射位置及应用窗口的布局树。布局树为应用窗口布局树获取单元获取得到。
应用窗口布局树获取单元,部署在Android系统中,用于获取当前应用窗口的布局树。
应用窗口监听单元,部署于Android系统中,用于监测当前显示的Android应用窗口显示界面的变化情况,当监测到显示界面发生变化时,即,当产生创建窗口、销毁窗口、创建View或销毁View等事件时,则调用应用窗口布局树获取单元获取当前所显示的应用窗口的布局树,并将该布局树发送至映射方案切换单元。
映射方案切换单元,部署于桌面系统中,用于根据获取到的当前应用窗口显示界面的布局树,利用树搜索算法与键盘映射方案配置单元生成的键盘按键映射方案中的布局树进行匹配,选出具有相同布局树的键盘按键映射方案,将该方案作为新的键盘按键映射方案重新。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
机译: 自动检测键盘布局以提高拼写建议的质量并识别服务器和远程用户之间的键盘映射错误的方法和系统
机译: 基于逻辑布局的配电网自动映射方法
机译: 基于逻辑布局的配电网自动映射方法