一种输入操作处理方法、处理装置及计算机可读存储介质与流程

文档序号:14389770阅读:117来源:国知局
一种输入操作处理方法、处理装置及计算机可读存储介质与流程

本发明涉及智能终端输入操作处理领域,尤其涉及一种输入操作处理方法、处理装置及计算机可读存储介质。



背景技术:

目前智能手机、平板电脑等智能终端的应用越来越普及,特别是基于安卓操作系统(androidsystem)的智能终端,第三方在该操作系统的架构上开发了满足各种应用需求的应用程序,也就是app。这些应用程序往往需要和用户进行人机交互,也就是接收用户的输入操作,主要由所述智能终端的触摸屏接收触摸操作,而游戏等需要连接外部输入设备的应用程序,会根据操作的对象不同产生外部输入事件、触摸屏输入事件等不同的输入事件。

参阅图1,为安卓操作系统对于输入事件的处理流程框图,可以看到安卓操作系统(android)下的各层,其中应用层(application)包括根视图对象(viewrootimpl),根视图对象内又包括了视窗输入事件接收器(windowinputeventreceiver);框架层(framework)包括了输入事件抛射器(inputflinger),输入事件抛射器中又包括了输入分发器(inputdispatcher)和输入读取器(inputreader);输入设备层(inputdevice)包括游戏手柄(joystick)和触摸屏(touchscreen)。当有输入操作产生时,从输入设备层形成输入事件逐层上报,直至应用层中的视窗输入事件接收器。目前的安卓操作系统支持游戏手柄(joystick)等外部输入设备接入,接入后的外部输入设备就可以向应用程序发出外部输入事件,如果应用程序不对手外部输入事件做专门处理,则会根据默认规则处理外部输入事件,即图1中的视窗输入事件接收器会丢弃掉这些事件不做处理,也就是说应用程序仅能识别触摸屏(touchscreen)接收的输入操作,无法识别外部输入设备接收的输入操作。

参阅图2,为现有技术中对于外部输入事件及触摸屏输入事件的处理流程框图。为了使应用程序能够识别外部输入设备接收的输入操作,须建立外部输入事件与触摸屏事件之间的映射关系。具体地,现有技术设置了一个位于智能终端操作系统框架层的输入事件转换器(eventtranslator),该输入事件转换器从输入设备层接收外部输入设备(如游戏手柄)的外部输入事件后,将该外部输入事件转换为触摸屏输入事件,汇总至输入事件抛射器后再统一上报给应用层的视窗输入事件接收器。然而,对于应用层而言,无论是外部输入设备接收的操作还是触摸屏接收的操作,应用程序接收到的都是触摸屏输入事件,无法区分出该事件是由触摸屏产生的还是由外部输入设备产生的,进而导致外部输入设备和触摸屏不能同时使用,影响用户体验。

因此需要实现应用程序对不同的输入事件进行识别,以满足用户同时进行触摸屏操作和外部输入设备操作的需求。



技术实现要素:

本发明提供了一种支持外部输入设备和触摸屏同时进行输入操作的输入操作处理方法。

本发明公开了一种输入操作处理方法,用于处理一智能终端接收的输入操作,包括以下步骤:

s101:于一应用程序内预设至少二种输入操作与输入事件的映射关系;

s102:检测所述应用程序的输入事件接口是否接收任一种输入事件;

s103:当所述输入事件接口接收任一种输入事件时,所述应用程序通过所述映射关系识别所述输入事件对应的输入操作;

s104:将识别后的输入事件转换为与其他种类输入事件共存的输入事件;

s105:上报所述与其他种类输入事件共存的输入事件。

优选地,步骤s101中,所述输入操作包括所述智能终端触摸屏接收的触摸操作及与所述智能终端连接的外部输入设备接收的外部输入操作;所述触摸操作对应一触摸屏输入事件,所述外部输入操作对应一外部输入事件。

优选地,步骤s104包括:

s104-1:当所述输入事件接口接收所述触摸屏输入事件时,将所述触摸屏输入事件转换为与所述外部输入事件共存的第一输入事件;

s104-2:当所述输入事件接口接收所述外部输入事件时,将所述外部输入事件转换为与所述触摸屏输入事件共存的第二输入事件。

优选地,步骤s102中,所述输入事件接口从所述智能终端操作系统的框架层接收所述输入事件。

优选地,步骤s101中,所述映射关系包括每一种输入事件的标识位;步骤s103中,所述应用程序通过所述输入事件内的标识位识别所述输入事件对应的输入操作。

本发明还公开了一种输入操作处理装置,用于处理一智能终端接收的输入操作,所述输入操作处理装置包括:

预设模块,于一应用程序内预设至少二种输入操作与输入事件的映射关系;

检测模块,检测所述应用程序的输入事件接口是否接收任一种输入事件;

识别模块,与所述检测模块及预设模块连接,当所述检测模块检测所述输入事件接口接收任一种输入事件时,所述识别模块通过所述映射关系识别所述输入事件对应的输入操作;

转换模块,与所述识别模块连接,将识别后的输入事件转换为与其他种类输入事件共存的输入事件;

上报模块,与所述转换模块连接,上报所述与其他种类输入事件共存的输入事件。

优选地,所述预设模块预设至少二种输入操作与输入事件的映射关系时,所述输入操作包括所述智能终端触摸屏接收的触摸操作及与所述智能终端连接的外部输入设备接收的外部输入操作;所述触摸操作对应一触摸屏输入事件,所述外部输入操作对应一外部输入事件。

优选地,所述转换模块包括:

第一转换单元,当所述输入事件接口接收所述触摸屏输入事件时,将所述触摸屏输入事件转换为与所述外部输入事件共存的第一输入事件;

第二转换单元,当所述输入事件接口接收所述外部输入事件时,将所述外部输入事件转换为与所述触摸屏输入事件共存的第二输入事件。

优选地,所述检测模块检测所述输入事件接口是否从所述智能终端操作系统的框架层接收所述输入事件。

优选地,所述预设模块预设至少二种输入操作与输入事件的映射关系时,所述映射关系包括每一种输入事件的标识位;所述识别模块通过所述输入事件内的标识位识别所述输入事件对应的输入操作。

本发明还公开了一种计算机可读存储介质,其上存储有计算机程序,用于处理一智能终端接收的输入操作,所述计算机程序被处理器执行时实现以下步骤:

s106:于一应用程序内预设至少二种输入操作与输入事件的映射关系;

s107:检测所述应用程序的输入事件接口是否接收任一种输入事件;

s108:当所述输入事件接口接收任一种输入事件时,所述应用程序通过所述映射关系识别所述输入事件对应的输入操作;

s109:将识别后的输入事件转换为与其他种类输入事件共存的输入事件;

s110:上报所述与其他种类输入事件共存的输入事件。

优选地,步骤s106中,所述输入操作包括所述智能终端触摸屏接收的触摸操作及与所述智能终端连接的外部输入设备接收的外部输入操作;所述触摸操作对应一触摸屏输入事件,所述外部输入操作对应一外部输入事件。

优选地,步骤s109包括:

s109-1:当所述输入事件接口接收所述触摸屏输入事件时,将所述触摸屏输入事件转换为与所述外部输入事件共存的第一输入事件;

s109-2:当所述输入事件接口接收所述外部输入事件时,将所述外部输入事件转换为与所述触摸屏输入事件共存的第二输入事件。

优选地,步骤s107中,所述输入事件接口从所述智能终端操作系统的框架层接收所述输入事件。

优选地,步骤s106中,所述映射关系包括每一种输入事件的标识位;步骤s108中,所述应用程序通过所述输入事件内的标识位识别所述输入事件对应的输入操作。

采用了上述技术方案后,与现有技术相比,具有以下有益效果:

1.可以使用外部输入设备或者外部输入设备与触摸屏结合的方式对智能终端进行操作,可以提高输入操作的灵活性,提升用户体验;

2.仅在应用层进行代码修改,对不同的操作系统版本具有较好的兼容性。

附图说明

图1为现有技术中安卓操作系统对于输入事件的处理流程框图;

图2为现有技术中对于外部输入事件及触摸屏输入事件的处理流程框图;

图3为符合本发明一优选实施例中输入操作处理方法的流程示意图;

图4为图3中步骤s104的流程示意图;

图5为符合本发明一优选实施例中输入操作处理装置的结构框图;

图6为图5中转换模块的结构框图;

图7为符合本发明一优选实施例中计算机可读存储介质上计算机程序的流程示意图;

图8为图7中步骤s109的流程示意图;

图9为符合本发明一优选实施例中基于安卓操作系统的应用程序的框图。

附图标记:

10-输入操作处理装置、11-预设模块、12-检测模块、13-识别模块、14-转换模块、15-上报模块、141-第一转换单元、142-第二转换单元。

具体实施方式

以下结合附图与具体实施例进一步阐述本发明的优点。

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

在本发明的描述中,除非另有规定和限定,需要说明的是,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。

在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。

参阅图3,为符合本发明一优选实施例中输入操作处理方法的流程示意图,所述输入操作处理方法用于处理一智能终端接收的输入操作,包括以下步骤:

s101:于一应用程序内预设至少二种输入操作与输入事件的映射关系。

根据输入设备的不同,各种输入设备接收的输入操作也不同,例如所述智能终端的触摸屏能够接收触摸操作,所述智能终端的按键能够接收按压操作,若所述智能终端连接了游戏手柄、外部键盘等外部输入设备,则能接受外部输入操作。所述输入事件为所述智能终端内形成的软件任务,所述应用程序能够从操作系统框架层接收输入事件并对输入事件进行处理,例如对输入事件关联的计算任务进行触发,或者在显示界面显示输入事件的结果。不同的输入操作对应有不同的输入事件,各输入事件可由软件识别其区别。

本步骤于所述应用程序内预设至少二种输入操作与输入事件的映射关系,即预存不同输入事件对应的识别标识以及其对应的输入操作种类。所述应用程序设于所述智能终端操作系统的应用层,可以是游戏、远程操作软件等需要人机交互的应用软件。当所述应用程序启动时,通过hook技术,将外部输入事件与触摸屏输入事件的映射关系加载到应用程序中。hook的本意是钩子,在计算机软件开发中,hook技术是指对某个程序的接口进行监听,并截获该接口的数据进行处理,例如游戏外挂就是典型的hook技术应用。本实施例中则通过hook技术在所述应用程序内预设输入操作与输入事件的映射关系,具体的实现手段可以是对原有的应用程序中处理输入事件的类或者方法进行替换,在自定义的同名类或方法中预设所述映射关系,以便监听到输入事件接口上报输入事件时通过自定义的类或方法对输入事件进行处理。

s102:检测所述应用程序的输入事件接口是否接收任一种输入事件。

本步骤中,对所述应用程序的输入事件接口进行监听,检测所述输入事件接口是否接收任一种在步骤s101中预设的输入事件。所述输入事件接口可以是视窗输入事件接收器,可接收从所述操作系统的框架层上报的输入事件。当所述输入事件接口接收到输入事件时,必然产生数据流或相关标识位的变化,因此可以获知接收输入事件的行为。以安卓操作系统为例,本步骤监听应用程序获得输入事件接口windowinputeventreceiver类中的oninputevent,以对框架层上报的输入事件进行截获。

s103:当所述输入事件接口接收任一种输入事件时,所述应用程序通过所述映射关系识别所述输入事件对应的输入操作。

当步骤s102检测到所述输入事件接口接收任一种输入事件时,执行本步骤。本步骤中,所述应用程序通过所述映射关系识别所述输入事件对应的输入操作,由于不同种类的输入事件必然存在软件数据上的差异,例如不同的标识位、不同的成员变量或不同的属性等差异,上述差异已经作为映射关系在所述步骤s101中预设在所述应用程序内,因此能够识别出所述输入事件对应的输入操作。

s104:将识别后的输入事件转换为与其他种类输入事件共存的输入事件。

仅仅通过步骤s103对不同种类的输入事件进行识别还未实现所述应用程序对不同输入事件的处理,还需执行本步骤。本步骤执行转换操作,将所述步骤s103识别后的输入事件转换为与其他种类输入事件共存的输入事件。本步骤执行时,对所述输入事件进行修改,修改的内容可以是成员变量、属性等影响输入事件特性的数据,且修改后的输入事件能够与其他种类的输入事件共存,例如对外部输入设备上报的外部输入事件进行转换后,该事件可与触摸屏对应的触摸屏输入事件共存,即两者对于应用程序可以区分,并能够进行相应的处理操作。

s105:上报所述与其他种类输入事件共存的输入事件。

本步骤将步骤s104中转换后的输入事件上报,上报给所述应用程序中的其他模块,例如对输入事件进行相关的数据计算,或者是显示所述输入事件的结果。例如在游戏中,用户使用游戏手柄进行了针对操作对象移动的输入操作,该操作形成一输入事件后,游戏程序须对该输入事件进行分析,计算出操作对象的移动距离,并在显示界面上显示该操作对象的移动效果,在上述过程中,须将转换后的输入事件上报给所述应用程序中有关分析及显示的模块。本实施例中,通过java反射技术,将转换之后的输入事件通过oninputevent接口发出去。java反射技术依托于java反射机制实现,所述java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制,因此java语言也称为动态语言。通过java反射技术,能够获取转换后的输入事件的类的属性及方法,再将该属性及方法通过oninputevent接口发送至所述应用程序内的其他模块中。

作为所述输入操作处理方法的进一步改进,所述步骤s101中,所述输入操作包括所述智能终端触摸屏接收的触摸操作及与所述智能终端连接的外部输入设备接收的外部输入操作;所述触摸操作对应一触摸屏输入事件,所述外部输入操作对应一外部输入事件。本改进实施例进一步对所述输入操作的种类进行划分,划分为两种,分别是由所述触摸屏接收的触摸操作和由外部输入设备接收的外部输入操作。相应地,上述两种输入操作对应不同的输入事件,所述触摸操作对应一触摸屏输入事件,所述外部输入操作对应一外部输入事件,以便应用程序进行识别并处理。

参阅图4,为图3中步骤s104的流程示意图,步骤s104包括:

s104-1:当所述输入事件接口接收所述触摸屏输入事件时,将所述触摸屏输入事件转换为与所述外部输入事件共存的第一输入事件。

s104-2:当所述输入事件接口接收所述外部输入事件时,将所述外部输入事件转换为与所述触摸屏输入事件共存的第二输入事件。

本改进实施例中,在所述输入操作被划分为触摸操作及外部输入操作的基础上,对所述步骤s104进行了进一步限定,根据所述输入事件接口接收的输入事件的种类,分别将输入事件转换为第一输入事件或第二输入事件。所述第一输入事件能够体现关于触摸操作的属性或相关参数,所述第二输入事件能够体现关于外部输入操作的属性或相关参数,以便后续所述应用程序内其他模块进行处理。

作为所述输入操作处理方法的进一步改进,步骤s102中,所述输入事件接口从所述智能终端操作系统的框架层接收所述输入事件。由于输入事件自安卓操作系统的驱动层形成后逐层上报,理论上可以在驱动层(androiddriver)、本地运行库层(androidnative)、框架层(framework)及应用层(application)中的任一层进行拦截处理。为了减少操作系统升级时的代码移植工作量,本实施例中对于所述输入事件的接收、检测、处理过程均在应用层实现,因此可以从所述框架层接收所述输入事件,这样无论是操作系统升级,还是对于不同版本的操作系统代码移植,均无须改动框架层及其以下各层的代码,减少了代码移植工作量。

作为所述输入操作处理方法的进一步改进,步骤s101中,所述映射关系包括每一种输入事件的标识位;步骤s103中,所述应用程序通过所述输入事件内的标识位识别所述输入事件对应的输入操作。本改进实施例对于所述输入事件的识别方式作了进一步限定,即通过所述输入事件的标识位进行识别,因此需要在所述映射关系中预设标识位,并在识别步骤中根据预设的标识位进行输入事件的识别。

参阅图9,为符合本发明一优选实施例中基于安卓操作系统的应用程序的框图,与图1相比,本发明在原有的安卓操作系统框架上增加了方法捕捉器(methodhooker),所述方法捕捉器中又包括了输入事件方法(oninputevent),所述输入事件方法中又包括了事件转换器(exchanger)。步骤s101中则预设了所述方法捕捉器,其内部的输入事件方法定义了输入操作与输入事件的映射关系;步骤s102则检测框架层是否上报输入事件至应用层的视窗输入事件接收器,所述框架层通过所述输入事件接口上报所述输入事件;步骤s103及步骤s104则通过方法捕捉器对所述视窗输入事件接收器中的输入事件方法进行替换,使用所述方法捕捉器中的输入事件方法对所述输入事件进行识别及转换;步骤s105则将所述方法捕捉器转换后的输入事件上报至输入事件队列(enqueueinputevent)。

参阅图5,为符合本发明一优选实施例中输入操作处理装置10的结构框图,所述输入操作处理装置10用于处理一智能终端接收的输入操作,包括:

-预设模块11

所述预设模块11于一应用程序内预设至少二种输入操作与输入事件的映射关系。所述预设模块11预存不同输入事件对应的识别标识以及其对应的输入操作种类,通过hook技术,将不同种类的输入事件与输入操作之间的映射关系加载到应用程序中。

-检测模块12

所述检测模块12检测所述应用程序的输入事件接口是否接收任一种输入事件。所述检测模块12实际上是监听程序,对所述输入事件接口进行监听,根据数据流或相关标识位的变化识别出是否有输入事件上报。

-识别模块13

所述识别模块13与所述检测模块12及预设模块11连接,当所述检测模块12检测所述输入事件接口接收任一种输入事件时,所述识别模块13通过所述映射关系识别所述输入事件对应的输入操作。所述识别模块13通过所述预设模块11获取所述映射关系,并对所述输入事件进行识别。

-转换模块14

所述转换模块14与所述识别模块13连接,将识别后的输入事件转换为与其他种类输入事件共存的输入事件。所述转换模块14根据所述识别模块13的识别结果对所述输入事件进行转换,对于不同的输入事件,其转换的结果也不同,最终转换为与其他种类输入事件共存的输入事件,即转换后的不同的输入事件被处理时能够区分。

-上报模块15

所述上报模块15与所述转换模块14连接,上报所述与其他种类输入事件共存的输入事件。所述上报模块15从所述转换模块14获取转换后的输入事件,并上报给所述应用程序内的其他模块进行后续处理。

作为所述输入操作处理装置10的进一步改进,所述预设模块11预设至少二种输入操作与输入事件的映射关系时,所述输入操作包括所述智能终端触摸屏接收的触摸操作及与所述智能终端连接的外部输入设备接收的外部输入操作;所述触摸操作对应一触摸屏输入事件,所述外部输入操作对应一外部输入事件。

参阅图6,为图5中转换模块14的结构框图,所述转换模块14包括:

-第一转换单元141

当所述输入事件接口接收所述触摸屏输入事件时,所述第一转换单元141将所述触摸屏输入事件转换为与所述外部输入事件共存的第一输入事件。

-第二转换单元142

当所述输入事件接口接收所述外部输入事件时,所述第二转换单元142将所述外部输入事件转换为与所述触摸屏输入事件共存的第二输入事件。

由于不同种类的输入事件的类及方法的属性均不同,因此通过所述第一转换单元141及第二转换单元142分别对触摸屏输入事件及外部输入事件进行转换,形成对应的第一输入事件及第二输入事件。

作为所述输入操作处理装置10的进一步改进,所述检测模块12检测所述输入事件接口是否从所述智能终端操作系统的框架层接收所述输入事件。本改进实施例中,所述检测模块12对所述框架层上报的输入事件进行监听。

作为所述输入操作处理装置10的进一步改进,所述预设模块11预设至少二种输入操作与输入事件的映射关系时,所述映射关系包括每一种输入事件的标识位;所述识别模块13通过所述输入事件内的标识位识别所述输入事件对应的输入操作。

参阅图7,为符合本发明一优选实施例中计算机可读存储介质上计算机程序的流程示意图,所述计算机可读存储介质上存储有计算机程序,用于处理一智能终端接收的输入操作,所述计算机程序被处理器执行时实现以下步骤:

s106:于一应用程序内预设至少二种输入操作与输入事件的映射关系;

s107:检测所述应用程序的输入事件接口是否接收任一种输入事件;

s108:当所述输入事件接口接收任一种输入事件时,所述应用程序通过所述映射关系识别所述输入事件对应的输入操作;

s109:将识别后的输入事件转换为与其他种类输入事件共存的输入事件;

s110:上报所述与其他种类输入事件共存的输入事件。

作为所述计算机程序的进一步改进,步骤s106中,所述输入操作包括所述智能终端触摸屏接收的触摸操作及与所述智能终端连接的外部输入设备接收的外部输入操作;所述触摸操作对应一触摸屏输入事件,所述外部输入操作对应一外部输入事件。

参阅图8,为图7中步骤s109的流程示意图,所述步骤s109包括:

s109-1:当所述输入事件接口接收所述触摸屏输入事件时,将所述触摸屏输入事件转换为与所述外部输入事件共存的第一输入事件;

s109-2:当所述输入事件接口接收所述外部输入事件时,将所述外部输入事件转换为与所述触摸屏输入事件共存的第二输入事件。

作为所述计算机程序的进一步改进,步骤s107中,所述输入事件接口从所述智能终端操作系统的框架层接收所述输入事件。

作为所述计算机程序的进一步改进,步骤s106中,所述映射关系包括每一种输入事件的标识位;步骤s108中,所述应用程序通过所述输入事件内的标识位识别所述输入事件对应的输入操作。

上述计算机程序的方法步骤与本发明中的输入操作处理方法的实现方式一致,不再赘述。

应当注意的是,本发明的实施例有较佳的实施性,且并非对本发明作任何形式的限制,任何熟悉该领域的技术人员可能利用上述揭示的技术内容变更或修饰为等同的有效实施例,但凡未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何修改或等同变化及修饰,均仍属于本发明技术方案的范围内。

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