一种基于触摸事件的自适应键盘映射方法及装置
文献发布时间:2023-06-19 12:07:15
技术领域
本发明属于在桌面操作系统上运行移动应用的开发技术领域,具体涉及一种基于触摸事件的自适应键盘映射方法及装置。
背景技术
Linux或Windows等桌面操作系统Android运行环境是一种在Linux或Windows操作系统上运行Android应用(App)的技术,该技术对丰富操作系统应用生态具有非常重要的意义。
使用Android运行环境在桌面操作系统上运行Android应用时,由于PC计算机的显示器往往不支持触摸,通常使用鼠标点击模拟触摸事件。但是,对于复杂的Android应用窗口操作,例如游戏应用中的多点快速触摸,就需要用键盘的不同的按键对应到应用窗口的不同位置,即按下某一键,就相当于点击了应用窗口的某个位置。
现有的键盘映射是采用预先定义映射规则的方式实现,即通过预先定义键盘按键与屏幕位置的对应关系实现映射。该方法适用于应用窗口尺寸保持不变的情况,然而,当应用窗口出现缩放时,再采用之前设定的映射关系将键盘映射到屏幕将会导致映射的错位,从而导致用户操作错位,为用户带来了不便,降低了用户体验。
发明内容
有鉴于此,本发明提供了一种基于触摸事件的自适应键盘映射方法及装置,根据实时获取的按键信息构造安卓系统触摸事件实现键盘映射方案的自适应调整。
本发明提供的一种基于触摸事件的自适应键盘映射方法,具体包括以下步骤:
建立桌面系统的键盘按键与安卓应用窗口之间的键盘映射方案,所述键盘映射方案包括所述安卓应用窗口对应的包名、活动名称、按键键码、对应的映射位置,及所述安卓应用窗口内的各视图的名称及标识;当监测到所述桌面系统出现键盘按键事件时,查找所述键盘映射方案获取所述键盘按键事件所对应的视图的名称或标识;根据所述视图的名称或标识确定视图对象,构建所述视图对象的触摸事件实现对所述安卓应用窗口的操作。
进一步地,根据所述视图的名称或标识确定视图对象的方式为,所述桌面系统将所述视图的名称或标识发送至安卓系统,由安卓系统查找所述视图的视图对象。
进一步地,所述建立桌面系统的键盘按键与安卓应用窗口之间的键盘映射方案的方式为采用可视化方式配置。
本发明提供的一种基于触摸事件的自适应键盘映射装置,包括键盘映射方案配置单元、视图信息获取单元、键盘按键事件监听单元及实时映射单元;
所述键盘映射方案配置单元,用于配置桌面系统的键盘按键与安卓应用窗口之间的键盘映射方案,所述键盘映射方案包括所述安卓应用窗口对应的包名、活动名称、按键键码、对应的映射位置,及所述安卓应用窗口内的各视图的标识及名称;
所述视图信息获取单元,位于安卓系统中,用于提供安卓应用窗口中的视图信息,所述视图信息包括视图的名称及标识;
所述键盘按键事件监听单元,用于监测所述桌面系统中的键盘按键事件,若监测到按键事件,则根据所述键盘映射方案配置单元输出的所述键盘按键映射方案查找所述按键事件对应的视图的名称或ID,以所述视图的名称或ID作为参数调用所述实时映射单元;
所述实时映射单元,用于根据获取到的视图名称或ID查找视图对象,针对所述视图对象构造触摸事件,以所述触摸事件作为输入调用所述视图对象的处理函数实现对所述安卓应用窗口的操作。
进一步地,所述视图信息获取单元与所述键盘按键事件监听单元之间采用RPC通信方式传输数据。
有益效果:
本发明通过预先设定的键盘按键映射方案绑定按键与Android应用窗口中的视图(View),当桌面系统接收到按键事件时,根据键盘按键映射方案实时将键盘按键事件转换为Android系统的触摸事件,以实现对Android应用窗口的操作,因此即使Android应用窗口的尺寸发生变化,也不会产生映射错位,有效提高了桌面平台上安卓应用中操作的便利性,显著提升了用户体验。
附图说明
图1为本发明提供的一种基于触摸事件的自适应键盘映射方法的流程图。
图2为本发明提供的一种基于触摸事件的自适应键盘映射装置的结构图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供的一种基于触摸事件的自适应键盘映射方法及装置,其核心思想是:预先设定键盘按键映射方案绑定按键与Android应用窗口中的视图(View),当桌面系统接收到按键事件时,根据键盘按键映射方案实时将键盘按键事件转换为Android系统对应的触摸事件,由该触摸事件实现对Android应用窗口的操作。根据本发明的实现机制,本发明更适合非游戏(基于OpenGL ES)类的Android应用,因为此类应用支持提取当前Android应用窗口的Window/View的对象布局及坐标。
本发明提供的一种基于触摸事件的自适应键盘映射方法,流程如图1所示,包括以下步骤:
步骤1、配置键盘映射方案。键盘映射方案用于说明当前键盘上的按键与Android应用窗口之间的对应关系,具体包括:当前应用的包名、活动名称(Activity Name)、键盘按键的键码(KeyCode)、按键映射位置、按键映射视图(View)名及按键映射视图标识(视图ID)。
现有技术中,任意品牌的键盘上的按键都具有唯一的扫描码(ScanCode),该扫描码经过操作系统层的转换都与确定的键码(KeyCode)相对应,因此,在操作系统层处理键盘相关的任务时,仅需关注键盘按键的键码(KeyCode)即可。按键映射位置可采用该位置在应用显示界面中对应的位置坐标进行描述,记为:(x,y)。
其中,按键映射视图名及按键映射视图标识(View ID)通过如下方式获取:
修改Android系统的WindowManagerService,即在WindowManagerService中增加返回当前应用窗口中所包含视图的相关信息的方法,以获取应用窗口内各视图的名称及ID等信息;使用RPC通信方式,将按键映射位置发送至Android系统的WindowManagerService,由WindowManagerService返回该坐标所对应的视图的名称及ID。
本发明中,键盘映射方案的配置可采用可视化方式进行配置。
步骤2、启动键盘映射后,当桌面系统监测到键盘按键事件时,包括KeyDown及KeyUp事件,桌面系统根据步骤1中设定的键盘映射方案获取当前按键所对应的视图ID或视图名称;然后,将该视图ID或视图名称发送至Android系统。
步骤3、Android系统根据该视图ID或视图名称查找该视图对应的视图对象,针对该视图对象,构造触摸事件(MotionEvent)模拟Finger Down和Finger Up事件,然后以该触摸事件作为输入调用该视图对象的处理函数,实现对该视图的操作。
根据本发明提供的一种基于触摸事件的自适应键盘映射方法,本发明设计了一种基于触摸事件的自适应键盘映射装置,装置的结构如图2所示,包括键盘映射方案配置单元、视图信息获取单元、键盘按键事件监听单元及实时映射单元。
其中,键盘映射方案配置单元,用于配置键盘按键与Android应用窗口之间的按键对应关系,具体包括:当前Android应用的包名、活动名称(Activity Name)、键盘按键的键码(KeyCode)及按键映射位置;然后,使用视图信息获取单元,根据该对应关系中的按键映射位置获取当前窗口的视图的名称及标识(ID)。
视图信息获取单元,部署在安卓运行环境中,用于提供当前窗口的视图的信息,包括视图的名称及ID,支持根据视图的ID或坐标查询视图的其他信息。
键盘按键事件监听单元,用于监测桌面系统中的键盘按键事件,若监测到按键事件,则读取键盘映射方案配置单元输出的当前窗口的键盘按键映射方案中的视图的名称或ID,以视图的名称或ID作为参数调用实时映射单元。
实时映射单元,用于根据获取到的视图名称或ID查找视图对象,针对该视图对象,构造触摸事件(MotionEvent)模拟Finger Down和Finger Up事件,然后以该触摸事件作为输入调用该视图对象的处理函数,实现对该视图的操作。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种基于触摸事件的自适应键盘映射方法及装置
- 一种基于视图匹配的自适应键盘映射方法及装置