模拟按键检测方法、装置、计算机设备及存储介质与流程

文档序号:16474438发布日期:2019-01-02 23:26阅读:189来源:国知局

本发明涉及网络技术领域,特别涉及一种模拟按键检测方法、装置、计算机设备及存储介质。



背景技术:

随着网络技术的高速发展,用户对网络游戏的要求越来越高,网络游戏通过用户与用户之间的互动和对抗的方式,实现娱乐的目的。用户在通过网络游戏娱乐自身的同时,也可能获得相应的积分等奖励,因此,游戏外挂应用程序也由此出现。外挂,指的是利用计算机技术,修改网络游戏应用程序的部分程序,而制作成的作弊程序。通过外挂应用程序,用户无需在计算机设备前对网络游戏软件进行实时操作,就能得到其他用户在短时间内得不到的游戏效果。因此,外挂应用程序严重破坏了网络游戏的公平性,对网络游戏本身和其他用户造成了严重影响。

常用的外挂方式之一是模拟按键,模拟按键是通过改变程序,模拟键盘消息和鼠标消息来对目标应用程序的操作,通过模拟按键的方式进行游戏,可以无需用户操作,在应用程序内自动完成组队、对抗、交任务等一系列对网络游戏的操作,这严重破坏了网络游戏的平衡性。由此,相关技术提出了模拟按键检测方法,可以通过检测当前运行的进程所接收的键鼠消息中,是否携带预设外挂应用程序的标识,如果携带,则确定当前操作是由模拟按键方式触发,而不是人为实现。

然而,上述检测方法中仅能够检测到一些已知外挂应用程序,而一旦用户使用一些不知名的外挂应用程序,则无法实现检测,导致检测的准确性很差。



技术实现要素:

本发明实施例提供了一种模拟按键检测方法、装置、计算机设备及存储介质,可以解决相关技术中模拟按键检测的准确性很差的问题。该技术方案如下:

一方面,提供了一种模拟按键检测方法,该方法包括:

设置接口挂钩函数,该接口挂钩函数用于挂钩模拟键鼠操作的接口;

基于该接口挂钩函数,获取目标调用函数地址,该目标调用函数地址为最近一次调用该模拟键鼠操作的接口的调用函数地址;

基于该目标调用函数地址,获取该目标调用函数地址所在的模块名和模块全路径,该模块名为用于存储该目标调用函数地址的可执行文件的文件名,该模块全路径为用于存储该目标调用函数地址的可执行文件的存储地址;

基于该目标调用函数地址所在的模块名和模块全路径,确定最近一次的键鼠操作是否为模拟按键操作。

在一种可能实现方式中,所述基于所述接口挂钩函数,获取目标调用函数地址包括:

基于所述接口挂钩函数,从所述接口挂钩函数的栈帧的底部开始,进行栈回溯,获得目标调用函数地址。

在一种可能实现方式中,所述基于所述目标调用函数地址,获取所述目标调用函数地址所在的模块名和模块全路径包括:

基于所述目标调用函数地址,遍历所有进程;

获取在所述目标应用程序的进程中的所述目标调用函数地址所在的可执行文件,所述可执行文件的文件名和存储地址即为所述目标调用函数地址所在的模块名和模块全路径。

在一种可能实现方式中,所述基于所述目标调用函数地址所在的模块名和模块全路径,确定最近一次的键鼠操作是否为模拟按键操作包括:

如果检测到所述目标调用函数地址所在的模块名和模块全路径是预存的模块名和模块全路径,则最近一次的键鼠操作是模拟按键操作;

向服务器发送模拟按键检测信息,所述模拟按键检测信息携带所述目标应用程序的用户信息。

在一种可能实现方式中,所述基于所述目标调用函数地址所在的模块名和模块全路径,确定最近一次的键鼠操作是否为模拟按键操作包括:

将所述目标调用函数地址所在的模块名和模块全路径发送至服务器,由所述服务器根据所述目标调用函数地址所在的模块名和模块全路径确定所述最近一次的键鼠操作是否为模拟按键操作。

在一种可能实现方式中,所述设置接口挂钩函数之前,所述方法还包括:

创建一个数组列表,所述数组列表用于保存组合数组项,所述组合数组项由虚拟键值和当前时间点组成,所述虚拟键值用于表示键鼠消息;

设置第一挂钩函数,所述第一挂钩函数用于挂钩所有的消息发送函数;

设置第二挂钩函数,所述第二挂钩函数用于挂钩所有的消息接收函数;

基于所述第一挂钩函数所获取到的第一虚拟键值更新所述数组列表,所述第一虚拟键值用于表示所述消息发送函数所定义的键鼠消息;

当检测到所述第二挂钩函数所获取的第二虚拟键值在所述数组列表中不存在时,执行所述设置接口挂钩函数的步骤。

在一种可能实现方式中,所述基于所述第一挂钩函数所获取到的第一虚拟键值更新所述数组列表包括:

获取所述第一虚拟键值;

获取当前时间点;

基于所述第一虚拟键值和所述当前时间点,获取第一组合数组项;

基于所述第一组合数组项,更新所述数组列表。

一方面,提供了一种模拟按键检测装置,该装置包括:

设置模块,用于设置接口挂钩函数,该接口挂钩函数用于挂钩模拟键鼠操作的接口;

获取模块,用于基于该接口挂钩函数,获取目标调用函数地址,该目标调用函数地址为最近一次调用该模拟键鼠操作的接口的调用函数地址;

该获取模块,还用于基于该目标调用函数地址,获取该目标调用函数地址所在的模块名和模块全路径,该模块名为用于存储该目标调用函数地址的可执行文件的文件名,该模块全路径为用于存储该目标调用函数地址的可执行文件的存储地址;

确定模块,用于基于该目标调用函数地址所在的模块名和模块全路径,确定最近一次的键鼠操作是否为模拟按键操作。

在一种可能实现方式中,所述获取模块用于:

基于所述接口挂钩函数,从所述接口挂钩函数的栈帧的底部开始,进行栈回溯,获得目标调用函数地址。

在一种可能实现方式中,所述获取模块还用于:

基于所述目标调用函数地址,遍历所有进程;

获取在所述目标应用程序的进程中的所述目标调用函数地址所在的可执行文件,所述可执行文件的文件名和存储地址即为所述目标调用函数地址所在的模块名和模块全路径。

在一种可能实现方式中,所述确定模块用于:

如果检测到所述目标调用函数地址所在的模块名和模块全路径是预存的模块名和模块全路径,则最近一次的键鼠操作是模拟按键操作;

向服务器发送模拟按键检测信息,所述模拟按键检测信息携带所述目标应用程序的用户信息。

在一种可能实现方式中,所述确定模块还用于:

将所述目标调用函数地址所在的模块名和模块全路径发送至服务器,由所述服务器根据所述目标调用函数地址所在的模块名和模块全路径确定所述最近一次的键鼠操作是否为模拟按键操作。

在一种可能实现方式中,所述装置还包括:

创建模块,用于创建一个数组列表,所述数组列表用于保存组合数组项,所述组合数组项由虚拟键值和当前时间点组成,所述虚拟键值用于表示键鼠消息;

所述设置模块还用于设置第一挂钩函数,所述第一挂钩函数用于挂钩所有的消息发送函数;

所述设置模块还用于设置第二挂钩函数,所述第二挂钩函数用于挂钩所有的消息接收函数;

更新模块,用于基于所述第一挂钩函数所获取到的第一虚拟键值更新所述数组列表,所述第一虚拟键值用于表示所述消息发送函数所定义的键鼠消息;

执行模块,用于当检测到所述第二挂钩函数所获取的第二虚拟键值在所述数组列表中不存在时,执行所述设置接口挂钩函数的步骤。

在一种可能实现方式中,所述更新模块用于:

获取所述第一虚拟键值;

获取当前时间点;

基于所述第一虚拟键值和所述当前时间点,获取第一组合数组项;

基于所述第一组合数组项,更新所述数组列表。

一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现所述模拟按键检测方法所执行的操作。

一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现所述模拟按键检测方法所执行的操作。

本发明通过将最近一次调用函数地址所在的模块名和模块全路径与预存的模块名和模块全路径比较的方法,判断该目标应用程序中是否存在模拟按键操作,能够检测到在该目标应用程序运行的同时,是否也运行了已知外挂应用程序和一些不知名的外挂应用程序,大大提高了外挂应用程序检测的准确性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种模拟按键检测方法的流程图;

图2是本发明实施例提供的一种模拟按键检测方法的流程图;

图3是本发明实施例提供的一种排除内部模拟按键方法的流程图;

图4是本发明实施例提供的一种模拟按键检测装置的结构示意图;

图5是本发明实施例提供的一种终端的结构框图;

图6是本发明实施例提供的一种服务器的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

图1是本发明实施例提供的一种模拟按键检测方法的流程图,参见图1,该实施例具体包括:

101、设置接口挂钩函数,该接口挂钩函数用于挂钩模拟键鼠操作的接口。

102、基于该接口挂钩函数,获取目标调用函数地址,该目标调用函数地址为最近一次调用该模拟键鼠操作的接口的调用函数地址。

103、基于该目标调用函数地址,获取该目标调用函数地址所在的模块名和模块全路径,该模块名为用于存储该目标调用函数地址的可执行文件的文件名,该模块全路径为用于存储该目标调用函数地址的可执行文件的存储地址。

104、基于该目标调用函数地址所在的模块名和模块全路径,确定最近一次的键鼠操作是否为模拟按键操作。

在一些实施例中,该基于该接口挂钩函数,获取目标调用函数地址包括:

基于该接口挂钩函数,从该接口挂钩函数的栈帧的底部开始,进行栈回溯,获得目标调用函数地址。

在一些实施例中,该基于该目标调用函数地址,获取该目标调用函数地址所在的模块名和模块全路径包括:

基于该目标调用函数地址,遍历所有进程;

获取在该目标应用程序的进程中的该目标调用函数地址所在的可执行文件,该可执行文件的文件名和存储地址即为该目标调用函数地址所在的模块名和模块全路径。

在一些实施例中,该基于该目标调用函数地址所在的模块名和模块全路径,确定最近一次的键鼠操作是否为模拟按键操作包括:

如果检测到该目标调用函数地址所在的模块名和模块全路径是预存的模块名和模块全路径,则最近一次的键鼠操作是模拟按键操作;

向服务器发送模拟按键检测信息,该模拟按键检测信息携带该目标应用程序的用户信息。

在一些实施例中,该基于该目标调用函数地址所在的模块名和模块全路径,确定最近一次的键鼠操作是否为模拟按键操作包括:

将该目标调用函数地址所在的模块名和模块全路径发送至服务器,由该服务器根据该目标调用函数地址所在的模块名和模块全路径确定该最近一次的键鼠操作是否为模拟按键操作。

在一些实施例中,该设置接口挂钩函数之前,该方法还包括:

创建一个数组列表,该数组列表用于保存组合数组项,该组合数组项由虚拟键值和当前时间点组成,该虚拟键值用于表示键鼠消息;

设置第一挂钩函数,该第一挂钩函数用于挂钩所有的消息发送函数;

设置第二挂钩函数,该第二挂钩函数用于挂钩所有的消息接收函数;

基于该第一挂钩函数所获取到的第一虚拟键值更新该数组列表,该第一虚拟键值用于表示该消息发送函数所定义的键鼠消息;

当检测到该第二挂钩函数所获取的第二虚拟键值在该数组列表中不存在时,执行该设置接口挂钩函数的步骤。

在一些实施例中,该基于该第一挂钩函数所获取到的第一虚拟键值更新该数组列表包括:

获取该第一虚拟键值;

获取当前时间点;

基于该第一虚拟键值和该当前时间点,获取第一组合数组项;

基于该第一组合数组项,更新该数组列表。

上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。

图2是本发明实施例提供的一种模拟按键检测方法的流程图,可以应用于任一种计算机设备中。参见图2,该实施例具体包括:

201、通过第一挂钩函数,获取第一虚拟键值和当前时间点,该第一挂钩函数用于挂钩所有的消息发送函数。

在本发明实施例中,在目标应用程序运行时,可以设置第一挂钩函数,该第一挂钩函数用于挂钩所有的消息发送函数,挂钩所有的消息发送函数后,该第一挂钩函数即可获取到发送的所有键鼠消息的虚拟键值,该第一虚拟键值用于表示该消息发送函数所定义的键鼠消息,基于该第一挂钩函数,获取到该第一虚拟键值,同时,每获取到一个该第一虚拟键值,也获取与该第一虚拟键值所对应的时间点,从而基于第一虚拟键值和当前时间点执行后续的数组项获取过程。

202、基于该第一虚拟键值和该当前时间点,获取第一组合数组项。

在本发明实施例中,将获取的该第一虚拟键值和该当前时间点,以【第一虚拟键值,当前时间点】的形式,形成该第一组合数组项。

203、基于该第一组合数组项,更新该数组列表。

在本发明实施例中,该目标应用程序内部也有可能发送模拟键鼠消息,因此,为了避免检测到的是该目标应用程序内部发送的模拟键鼠消息,而造成服务器对该目标应用程序的用户进行误处罚或其他影响,在目标应用程序运行时,创建数组列表,用于排除该目标应用程序内部发送的模拟键鼠消息。该数组列表为固定容量的列表,也即是,该数组列表存储的组合数组项的数量有限,例如,该数组列表最多能够存储256个组合数组项。该数组列表用于保存组合数组项,该组合数组项由虚拟键值和当前时间点组成,例如,该组合数组项的形式为【虚拟键值,当前时间点】,其中,该虚拟键值为用于表示键鼠消息的虚拟代码。

该数组列表中保留有限时间内的有限数量的组合数组项,例如,该数组列表只保留10秒内的组合数组项,超过10秒内的组合数组项则自动删除。

在本发明实施例中,将获取到的该第一组合数组项插入到该数组列表中以更新该数组列表,下面,针对该数组列表的更新过程,作具体介绍:

该更新数组列表的方式以环形队列的方式进行,将该第一组合数组项插入到开始位,以替代开始位中的组合数组项,根据该第一组合数组项中数组的数量,从开始位依次往后对原有的组合数组项进行替代,基于在10秒内保留的组合数组项是有限的,因此,以逆时针环形队列的方式,将第一组合数组项依次替换到结束位后,继续按照逆时针的方式替换原有的组合数组项,同时,根据当前时间点,更新开始位和结束位之间的组合数组项。例如,该数组列表中,最近10秒内有10个组合数组项,当该第一组合数组项中有2个组合数组项时,将该2个组合数组项从开始位,替代最近10秒的10个组合数组项中的前两个;当该第一组合数组项中有12个组合数组项时,将该12个组合数组项从开始位,替代完最近10秒的10个组合数组项后,再从结束位开始,依次替代2个组合数组项。

204、当检测到该第二挂钩函数所获取的第二虚拟键值在更新后的该数组列表中不存在时,设置接口挂钩函数。

在本发明实施例中,当检测到更新后的该数组列表中不存在与该第二虚拟键值一致的虚拟键值时,也即是,当证明该第二虚拟键值所对应的该键鼠消息不是该应用程序内部发送的键鼠消息时,则设置接口挂钩函数,来检测是否存在不是该目标应用程序内部发送的非正常键鼠消息。

基于上述步骤201至204,参见图3,步骤201至204的具体实现过程如下:

第一挂钩函数获取到该目标应用程序的所有消息后,过滤得到键鼠消息,并获取到该键鼠消息对应的第一虚拟键值和当前时间点,基于该第一虚拟键值和当前时间点得到第一组合数组项,将该第一组合数组项插入到数组列表的开始位以对数组列表进行更新,数组列表更新完成后,继续执行原生消息发送函数;

第二挂钩函数获取到该目标应用程序的所有消息后,过滤得到键鼠消息,并获取到该键鼠消息对应的第二虚拟键值和当前时间点,基于该第二虚拟键值和当前时间点得到第二组合数组项,基于该第二组合数组项遍历该数组列表,若该第二组合数组项存在于该数组列表的有效区内,则该第二挂钩函数所对应的键鼠消息为该目标应用程序的内部模拟按键消息,若该第二组合数组项不存在于该数组列表的有效区内,则继续执行原生消息接收函数。

205、基于该接口挂钩函数,从该接口挂钩函数的栈帧的底部开始,进行栈回溯,获得目标调用函数地址。

在实际应用中,栈帧是每一次相关函数调用所涉及的相关信息的记录单元,可以对函数调用过程进行记录,其中,栈帧存储了相关的函数调用地址。对于该接口挂钩函数,可以通过asm(assembly,汇编)汇编语言,从该接口挂钩函数的栈帧的底部开始,进行栈回溯,也即是,搜索相关函数调用关系,基于相关函数调用关系,获得该目标调用函数地址,该目标调用函数地址为最近一次调用该模拟键鼠操作的接口的调用函数地址。

206、基于该目标调用函数地址,遍历所有进程。

207、获取在该目标应用程序的进程中的该目标调用函数地址所在的模块名和模块全路径。

在本发明实施例中,该目标调用函数地址所在的模块名为用于存储该目标调用函数地址的可执行文件的文件名,该目标调用函数地址所在的模块全路径为用于存储该目标调用函数地址的可执行文件的存储地址。

208、如果检测到该目标调用函数地址所在的模块名和模块全路径是预存的模块名和模块全路径,则最近一次的键鼠操作是模拟按键操作。

在本发明实施例中,在该目标应用程序所在的计算机设备中,可能预存了不正常的模块名和模块全路径,例如,该不正常的模块名和模块全路径可以是携带外挂辅助程序的标识的模块名和模块路径,当检测到该目标调用函数地址所在的模块名和模块全路径是预存的模块名和模块全路径时,则证明该目标调用函数地址所对应的最近一次键鼠消息为模拟按键消息,也即是,最近一次的键鼠操作是模拟按键操作。

209、向服务器发送模拟按键检测信息,该模拟按键检测信息携带该目标应用程序的用户信息。

在本发明实施例中,服务器接收到该模拟按键检测信息后,可以根据该模拟按键检测信息中携带的该目标应用程序的用户信息,通过服务器中存储的预设信息,向该目标应用程序发送处罚指令,以对相关用户做出处罚,例如,禁止该用户使用该目标应用程序;或,取消该用户在设定时间内得到的积分等。

上述步骤208至209是基于计算机设备中预存的模块名和模块全路径进行的,在另一种实现方式中,还可以将该目标调用函数地址所在的模块名和模块全路径发送至服务器,由该服务器根据该目标调用函数地址所在的模块名和模块全路径确定该最近一次的键鼠操作是否为模拟按键操作,例如,该服务器中预存了携带外挂辅助程序的标识的模块名和模块路径,当检测到该目标调用函数地址所在的模块名和模块全路径是服务器中预存的模块名和模块全路径时,证明最近一次的键鼠操作是模拟按键操作。

本发明通过将最近一次调用函数地址所在的模块名和模块全路径与预存的模块名和模块全路径比较的方法,判断该目标应用程序中是否存在模拟按键操作,能够检测到在该目标应用程序运行的同时,是否也运行了已知外挂应用程序和一些不知名的外挂应用程序,大大提高了外挂应用程序检测的准确性。

上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。

图4是本发明实施例提供的一种模拟按键检测装置的结构示意图。参见图3,该装置包括:设置模块401、获取模块402、确定模块403。

设置模块401,用于设置接口挂钩函数,该接口挂钩函数用于挂钩模拟键鼠操作的接口;

获取模块402,用于基于该接口挂钩函数,获取目标调用函数地址,该目标调用函数地址为最近一次调用该模拟键鼠操作的接口的调用函数地址;

该获取402,还用于基于该目标调用函数地址,获取该目标调用函数地址所在的模块名和模块全路径,该模块名为用于存储该目标调用函数地址的可执行文件的文件名,该模块全路径为用于存储该目标调用函数地址的可执行文件的存储地址;

确定模块403,用于基于该目标调用函数地址所在的模块名和模块全路径,确定最近一次的键鼠操作是否为模拟按键操作。

在一些实施例中,该获取模块402用于:

基于该接口挂钩函数,从该接口挂钩函数的栈帧的底部开始,进行栈回溯,获得目标调用函数地址。

在一些实施例中,该获取模块402还用于:

基于该目标调用函数地址,遍历所有进程;

获取在该目标应用程序的进程中的该目标调用函数地址所在的可执行文件,该可执行文件的文件名和存储地址即为该目标调用函数地址所在的模块名和模块全路径。

在一些实施例中,该确定模块403用于:

如果检测到该目标调用函数地址所在的模块名和模块全路径是预存的模块名和模块全路径,则最近一次的键鼠操作是模拟按键操作;

向服务器发送模拟按键检测信息,该模拟按键检测信息携带该目标应用程序的用户信息。

在一些实施例中,该确定模块还403用于:

将该目标调用函数地址所在的模块名和模块全路径发送至服务器,由该服务器根据该目标调用函数地址所在的模块名和模块全路径确定该最近一次的键鼠操作是否为模拟按键操作。

在一些实施例中,该装置还包括:

创建模块,用于创建一个数组列表,该数组列表用于保存组合数组项,该组合数组项由虚拟键值和当前时间点组成,该虚拟键值用于表示键鼠消息;

该设置模块401,还用于设置第一挂钩函数,该第一挂钩函数用于挂钩所有的消息发送函数;

该设置模块401,还用于设置第二挂钩函数,该第二挂钩函数用于挂钩所有的消息接收函数;

更新模块,用于基于该第一挂钩函数所获取到的第一虚拟键值更新该数组列表,该第一虚拟键值用于表示该消息发送函数所定义的键鼠消息;

执行模块,用于当检测到该第二挂钩函数所获取的第二虚拟键值在该数组列表中不存在时,执行该设置接口挂钩函数的步骤。

在一些实施例中,该更新模块用于:

获取该第一虚拟键值;

获取当前时间点;

基于该第一虚拟键值和该当前时间点,获取第一组合数组项;

基于该第一组合数组项,更新该数组列表。

需要说明的是:上述实施例提供的模拟按键检测装置在模拟按键检测时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的模拟按键检测装置与模拟按键检测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

上述计算机设备可以提供为如图5的终端或如图6的服务器形式,具体说明如下,图5是本发明实施例提供的一种终端500的结构框图。该终端500可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp5(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端500还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,终端500包括有:处理器501和存储器502。

处理器501可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器501可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器501也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器501可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器501还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器502可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器502还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器502中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器501所执行以实现本发明中方法实施例提供的模拟按键检测方法。

在一些实施例中,终端500还可选包括有:外围设备接口503和至少一个外围设备。处理器501、存储器502和外围设备接口503之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口503相连。具体地,外围设备包括:射频电路504、触摸显示屏505、摄像头506、音频电路507、定位组件504和电源509中的至少一种。

外围设备接口503可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器501和存储器502。在一些实施例中,处理器501、存储器502和外围设备接口503被集成在同一芯片或电路板上;在一些其他实施例中,处理器501、存储器502和外围设备接口503中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路504用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路504通过电磁信号与通信网络以及其他通信设备进行通信。射频电路504将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路504包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路504可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路504还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本发明对此不加以限定。

显示屏505用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏505是触摸显示屏时,显示屏505还具有采集在显示屏505的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器501进行处理。此时,显示屏505还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏505可以为一个,设置终端500的前面板;在另一些实施例中,显示屏505可以为至少两个,分别设置在终端500的不同表面或呈折叠设计;在再一些实施例中,显示屏505可以是柔性显示屏,设置在终端500的弯曲表面上或折叠面上。甚至,显示屏505还可以设置成非矩形的不规则图形,也即异形屏。显示屏505可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件506用于采集图像或视频。可选地,摄像头组件506包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件506还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路507可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器501进行处理,或者输入至射频电路504以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端500的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器501或射频电路504的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路507还可以包括耳机插孔。

定位组件508用于定位终端500的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件508可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源509用于为终端500中的各个组件进行供电。电源509可以是交流电、直流电、一次性电池或可充电电池。当电源509包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,终端500还包括有一个或多个传感器510。该一个或多个传感器510包括但不限于:加速度传感器511、陀螺仪传感器512、压力传感器513、指纹传感器514、光学传感器515以及接近传感器516。

加速度传感器511可以检测以终端500建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器511可以用于检测重力加速度在三个坐标轴上的分量。处理器501可以根据加速度传感器511采集的重力加速度信号,控制触摸显示屏505以横向视图或纵向视图进行用户界面的显示。加速度传感器511还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器512可以检测终端500的机体方向及转动角度,陀螺仪传感器512可以与加速度传感器511协同采集用户对终端500的3d动作。处理器501根据陀螺仪传感器512采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器513可以设置在终端500的侧边框和/或触摸显示屏505的下层。当压力传感器513设置在终端500的侧边框时,可以检测用户对终端500的握持信号,由处理器501根据压力传感器513采集的握持信号进行左右手识别或快捷操作。当压力传感器513设置在触摸显示屏505的下层时,由处理器501根据用户对触摸显示屏505的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器514用于采集用户的指纹,由处理器501根据指纹传感器514采集到的指纹识别用户的身份,或者,由指纹传感器514根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器501授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器514可以被设置终端500的正面、背面或侧面。当终端500上设置有物理按键或厂商logo时,指纹传感器514可以与物理按键或厂商logo集成在一起。

光学传感器515用于采集环境光强度。在一个实施例中,处理器501可以根据光学传感器515采集的环境光强度,控制触摸显示屏505的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏505的显示亮度;当环境光强度较低时,调低触摸显示屏505的显示亮度。在另一个实施例中,处理器501还可以根据光学传感器515采集的环境光强度,动态调整摄像头组件506的拍摄参数。

接近传感器516,也称距离传感器,通常设置在终端500的前面板。接近传感器516用于采集用户与终端500的正面之间的距离。在一个实施例中,当接近传感器516检测到用户与终端500的正面之间的距离逐渐变小时,由处理器501控制触摸显示屏505从亮屏状态切换为息屏状态;当接近传感器516检测到用户与终端500的正面之间的距离逐渐变大时,由处理器501控制触摸显示屏505从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图5中示出的结构并不构成对终端500的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

图6是本发明实施例提供的一种服务器的结构示意图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)601和一个或一个以上的存储器602,其中,该存储器602中存储有至少一条指令,该至少一条指令由该处理器601加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。

在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由处理器执行以完成上述实施例中的模拟按键检测方法。例如,该计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,上述程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

上述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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