CN108009033A - 模拟触控方法、装置和移动终端 - Google Patents

模拟触控方法、装置和移动终端 Download PDF

Info

Publication number
CN108009033A
CN108009033A CN201711418281.2A CN201711418281A CN108009033A CN 108009033 A CN108009033 A CN 108009033A CN 201711418281 A CN201711418281 A CN 201711418281A CN 108009033 A CN108009033 A CN 108009033A
Authority
CN
China
Prior art keywords
information
event information
event
touch
simulation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201711418281.2A
Other languages
English (en)
Other versions
CN108009033B (zh
Inventor
林晟
何志鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201711418281.2A priority Critical patent/CN108009033B/zh
Publication of CN108009033A publication Critical patent/CN108009033A/zh
Application granted granted Critical
Publication of CN108009033B publication Critical patent/CN108009033B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本发明提供一种模拟触控方法、装置和移动终端,所述方法通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息,所述事件信息包括用户触控事件信息和模拟触控事件信息;对所述事件信息进行重新分配形成新事件信息,将所述新事件信息返回所述输入事件接收器;所述输入事件接收器根据所述新事件信息分发事件给目标对象。所述方法通过截获事件信息并对事件信息进行重新分配,可以有效避免同时输出冲突的问题,而且无需事先向系统申请shell/root权限,使用便利性得到有效提高,有效提高了用户体验。

Description

模拟触控方法、装置和移动终端
技术领域
本发明涉及模拟触控技术领域,具体而言,本发明涉及一种模拟触控方法、装置和移动终端。
背景技术
传统技术中,Android系统提供的模拟触摸事件方案有几种:
·使用shell/root权限:用户触摸和模拟触摸同时输入时,这种方案中不会出现冲突,因为模拟触摸产生事件是被当作了用户的输入。
·使用Instrumentation:这种方案没有权限要求,但是模拟触摸产生的事件直接交给系统的事件分发进行处理,这时候如果用户同时也处于输入状态,就会导致后输入的事件被当成不合法的输入事件而被系统抛弃。
·使用系统InputManager的隐藏函数:实际上和Instrumentation是一样的,Instrumentation就是利用InputManager发生模拟触摸事件。
因此,传统的模拟触摸事件要不需要shell/root权限,要不可能会发生用户触摸和模拟触摸同时输入时出现冲突,使用便利性有待完善。
发明内容
本发明的目的旨在至少能解决上述的技术缺陷之一,特别是使用便利性较差的技术缺陷。
本发明提供一种模拟触控方法,包括如下步骤:
通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息,所述事件信息包括用户触控事件信息和模拟触控事件信息;
对所述事件信息进行重新分配形成新事件信息,将所述新事件信息返回所述输入事件接收器;
所述输入事件接收器根据所述新事件信息分发事件给目标对象。
在其中一个实施例中,所述模拟触控事件信息由应用程序或脚本生成。
在其中一个实施例中,通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息之前,所述脚本生成所述模拟触控事件信息,包括步骤:
当目标应用程序运行时获取其页面;
根据预设方向参数在预设区域内遍历所述页面的当前颜色,判断预设特征数组中的颜色信息与当前颜色的相似度是否超过预设阈值;
若是,对当前颜色对应的位置实施模拟触控。
在其中一个实施例中,所述预设特征数组中的颜色信息包括特征点颜色信息和周边点颜色信息;
判断预设特征数组中的颜色信息与当前颜色的相似度是否超过预设阈值的步骤包括:
判断所述特征点颜色信息与当前颜色的相似度是否超过第一预设阈值;若是,判断所述周边点颜色信息与当前颜色的周边点颜色的相似度是否超过第二预设阈值。
在其中一个实施例中,所述预设特征数组中的颜色信息包括特征点颜色信息、周边点颜色信息、特征点与周边点之间的位置差值信息。
在其中一个实施例中,所述预设特征数组中的颜色信息包括特征点颜色信息、特征点与周边点之间的颜色差值信息、特征点与周边点之间的位置差值信息。
在其中一个实施例中,通过截图或获取帧缓存以获取目标应用程序页面。
在其中一个实施例中,对所述事件信息进行重新分配形成新事件信息的步骤中,对所述用户触控事件信息和模拟触控事件信息的响应顺序进行分配。
在其中一个实施例中,所述目标对象包括目标应用程序。
在其中一个实施例中,所述方法应用于安卓系统,所述输入事件接收器为InputEventReceiver类。
在其中一个实施例中,通过预埋设的钩子函数监控nativeInit方法和/或nativeDispose方法以截获原本发给输入事件接收器的事件信息。
在其中一个实施例中,通过dispatchInputEvent方法对所述事件信息进行重新分配。
在其中一个实施例中,还通过enqueueInputEvent方法和/或doProcessInputEvents方法对所述事件信息进行重新分配。
在其中一个实施例中,所述输入事件接收器根据所述新事件信息通过deliverInputEvent方法分发事件给目标对象。
在其中一个实施例中,所述目标对象包括目标Activity;根据所述新事件信息分发事件给目标对象后,通过dispatchTouchEvent()方法再次分发事件给目标Activity其本身,或其包含的ViewGroup或View响应。
本发明还提供一种对应用程序安装文件进行预处理的装置,包括:
HOOK模块,用于通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息,所述事件信息包括用户触控事件信息和模拟触控事件信息;
分配模块,用于对所述事件信息进行重新分配形成新事件信息,将所述新事件信息返回所述输入事件接收器;
分发模块,用于使得所述输入事件接收器根据所述新事件信息分发事件给目标对象。
在其中一个实施例中,所述模拟触控事件信息由应用程序或脚本生成。
在其中一个实施例中,所述脚本包括:获取模块、遍历模块和模拟模块;
获取模块,用于在目标应用程序运行时获取目标应用程序的页面;
遍历模块,用于根据预设方向参数在预设区域内遍历所述页面的当前颜色,判断预设特征数组中的颜色信息与当前颜色的相似度是否超过预设阈值;
若是,则模拟模块对当前颜色对应的位置实施模拟触控。
在其中一个实施例中,所述预设特征数组中的颜色信息包括特征点颜色信息和周边点颜色信息;
所述遍历模块用于:
判断所述特征点颜色信息与当前颜色的相似度是否超过第一预设阈值;若是,判断所述周边点颜色信息与当前颜色的周边点颜色的相似度是否超过第二预设阈值。
在其中一个实施例中,所述预设特征数组中的颜色信息包括特征点颜色信息、周边点颜色信息、特征点与周边点之间的位置差值信息。
在其中一个实施例中,所述预设特征数组中的颜色信息包括特征点颜色信息、特征点与周边点之间的颜色差值信息、特征点与周边点之间的位置差值信息。
在其中一个实施例中,所述获取模块通过截图或获取帧缓存以获取目标应用程序页面。
在其中一个实施例中,所述分配模块用于:对所述用户触控事件信息和模拟触控事件信息的响应顺序进行分配。
在其中一个实施例中,所述目标对象包括目标应用程序。
在其中一个实施例中,所述方法应用于安卓系统,所述输入事件接收器为InputEventReceiver类。
在其中一个实施例中,所述HOOK模块用于:通过预埋设的钩子函数监控nativeInit方法和/或nativeDispose方法以截获原本发给输入事件接收器的事件信息。
在其中一个实施例中,所述分配模块用于:通过dispatchInputEvent方法对所述事件信息进行重新分配。
在其中一个实施例中,所述分配模块用于:还通过enqueueInputEvent方法和/或doProcessInputEvents方法对所述事件信息进行重新分配。
在其中一个实施例中,所述分发模块用于:使得所述输入事件接收器根据所述新事件信息通过deliverInputEvent方法分发事件给目标对象。
在其中一个实施例中,所述目标对象包括目标Activity;所述分发模块根据所述新事件信息分发事件给目标对象后,通过dispatchTouchEvent()方法再次分发事件给目标Activity其本身,或其包含的ViewGroup或View响应。
本方法还提供一种移动终端,其包括:
触敏显示器;
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于:执行根据上述任一项实施例所述的模拟触控方法。
上述的模拟触控方法、装置和移动终端,通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息,所述事件信息包括用户触控事件信息和模拟触控事件信息;对所述事件信息进行重新分配形成新事件信息,将所述新事件信息返回所述输入事件接收器;所述输入事件接收器根据所述新事件信息分发事件给目标对象;通过截获事件信息并对事件信息进行重新分配,可以有效避免同时输出冲突的问题,而且无需事先向系统申请shell/root权限,使用便利性得到有效提高,有效提高了用户体验。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为一个实施例的模拟触控方法流程示意图;
图2为一个实施例的模拟触控装置模块示意图;
图3为一个实施例的对应用程序安装文件进行预处理的装置模块示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通讯链路上,执行双向通讯的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通讯设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通讯设备;PCS(Personal Communications Service,个人通讯系统),其可以组合语音、数据处理、传真和/或数据通讯能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global Positioning System,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通讯终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
下述的说明中,模拟触控方法、装置和移动终端可以应用于移动终端操作系统中的应用程序,例如iOS系统、安卓系统中的应用程序,以下主要以安卓系统为例。
图1为一个实施例的模拟触控方法流程示意图。本发明提供一种模拟触控方法,包括如下步骤:
步骤S100:通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息,所述事件信息包括用户触控事件信息和模拟触控事件信息。
这里的模拟触控事件,是在用户本身并没有进入输入操作下模拟用户输入的触控事件,可以是应用程序(如下述的目标应用程序,例如可以是游戏应用程序)或脚本在模拟用户输入,因此模拟触控事件信息可以由应用程序或脚本生成。
以下描述下脚本生成模拟触控事件信息的过程。在通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息之前,脚本生成模拟触控事件信息,大概可以包括如下步骤1~3:
步骤1:当目标应用程序运行时获取其页面,例如游戏页面。
可以通过截图或获取帧缓存以获取目标应用程序页面,以下简单介绍下在安卓系统中的几种实现方法。
1、从ViewDrawingCache获取目标应用程序的view。
2、通过DecorView可以获取目标应用程序的view。示例代码如下:
View decorView=pActivity.getWindow().getDecorView();
decorView.setDrawingCacheEnabled(true);//建立drawingCachedecorView.buildDrawingCache();
bitmap=decorView.getDrawingCache();//从cache中获得bitmapdecorView.destroyDrawingCache();//用完之后需要释放资源
3、一些游戏是通过GLSurface来绘图的,上述方法无法正常获得截图,需要获得GLSurfaceView中的frameBuffer(帧缓冲)。要获得帧缓冲,首先需要去重写GLSurfaceView的onDrawFrame方法,然后通过回调方法中的参数gl的glReadPixels来获取buffer,示例代码如下:
gl.glReadPixels(x,y,w,h,GL10.GL_RGBA,GL10.GL_UNSIGNED_BYTE,intBuffer);
从而就可以获得一些游戏画面的帧缓冲。
使用这个方法可能会碰到以下问题:就是不能重写目标应用程序的GLSurfaceView中的onDrawFrame方法,也就意味着不能获取到gl对象来读取frameBuffer。
解决方案:通过queueEvent(Runnable r)方法post一个事件去运行,将代码放到Runnable中然后post到GL的队列中,在Runnable中获取gl对象。示例代码如下:
EGL10egl=(EGL10)EGLContext.getEGL();
GL10gl=(GL10)egl.eglGetCurrentContext().getGL();
4、使用MediaProjection截图。大概过程如下:
申请屏幕录制权限;
在onActivityResult中得到初始化数据初始化MediaProjectManager;
创建ImageReader并注册listener;
创建VirturlDisplay,设置ImageReader;
在监听回调中获取数据。
步骤2:根据预设方向参数在预设区域内遍历所述页面的当前颜色,判断预设特征数组中的颜色信息与当前颜色的相似度是否超过预设阈值;若是,执行步骤3。
用于辅助游戏的辅助脚本,绝大多数都是帮助玩家完成一些冗余琐碎的操作,而实现这些操作就需要脚本能够识别游戏内的图标(例如按键)、图案(场景)等内容,然后才能自动模拟一系列特定的点击或者移动拖拽操作。因此,在本步骤需要识别指定的图标(例如按键)或图案(场景),而识别图标或图案则可以通过颜色来进行识别。
预设方向参数是确定遍历的起点以及遍历方向的参数,也即将从页面的该起点位置开始遍历,在预设区域根据遍历方向(例如水平方向从左到右,垂直方向从上到下)一个点一个点的进行遍历。在安卓系统中,可以应用findColorInRegionFuzzy方法和findMultiColorInRegionFuzzy方法进行遍历匹配颜色,前者表示模糊区域找色,后者表示区域多点找色。
对于指定的图标或图案,通常需要多个点的颜色分布来识别。因此,首先需要定义这些指定的图标或图案的特征参数,形成特征数组。
事先获取到需要监控的页面后,可以将指定的图标或图案的某个点(例如中心点)作为特征点,然后在特征点周围(图标或图案的范围内)取多个周边点,通过这些点的颜色分布来识别对应的图标或图案。又或者,例如使用边缘特征提取算法计算出若干个周边点,再取出这些周边心的中心点作为特征点。
然后记录特征点的颜色、每个周边点所在位置的颜色、以及周边点与特征点的位置差值,将上述数据作为上述的特征数组的内容。因此,在一些实施例中,预设特征数组中的颜色信息包括特征点颜色信息、周边点颜色信息、特征点与周边点之间的位置差值信息。而在一些实施例中,也可以记录特征点的颜色、特征点与每个周边点的颜色差值、以及周边点与特征点的位置差值,将上述数据作为上述的特征数组的内容,即预设特征数组中的颜色信息包括特征点颜色信息、特征点与周边点之间的颜色差值信息、特征点与周边点之间的位置差值信息。
在一些实施例中,判断预设特征数组中的颜色信息与当前颜色的相似度是否超过预设阈值的步骤可以包括:判断所述特征点颜色信息与当前颜色的相似度是否超过第一预设阈值;若是,判断所述周边点颜色信息与当前颜色的周边点颜色的相似度是否超过第二预设阈值。即先判断是否匹配特征点,匹配后再判断周边点是否匹配,提高匹配的效率。
步骤3:识别指定的图标或图案后,就可以对其相应的位置进行模拟触控,即对所述的当前颜色对应的位置实施模拟触控。在安卓系统中,可以通过例如touchDown方法(模拟按下事件)、touchMove方法(模拟滑动事件)和touchUp方法(模拟抬起事件)进行模拟,从而生成模拟触控事件(输入事件)。安卓系统中,当有输入事件到达native层时,InputEventReceiver将会接收到该输入事件,这就是Framework层处理输入事件的开端。因此,输入事件接收器可以为InputEventReceiver类以及其包括的方法函数。
以下是InputEventReceiver注册到系统的示例代码:
在InputEventReceiver的构造函数中,有一个nativeInit方法的调用,将生成的实例传给native层,每当有输入事件时就会派发到这个实例上。
相对应的还有注销的方法:
这里的finalized参数主要是用来区分是主动注销处理,还是由于GC(GabageCollection,垃圾回收)导致的注销处理。
因此,可以通过预埋设的钩子函数监控nativeInit方法和/或nativeDispose方法以监控并截获原本发给输入事件接收器的事件信息。在应用程序启动的时候,预埋设的钩子函数找到上述两个方法在native层的函数地址,然后替换为下述重新分配步骤中需要调用的函数的地址,从而完成HOOK。当应用程序生成一个InputEventReceiver的实例时会调用替换的函数,此处将生成InputEventReceiver的代理实例,替代掉应用程序的实例。应用程序收到系统发送的事件信息,将先发送到该代理实例,处理后再发送给原InputEventReceiver。
所述的术语HOOK(钩子)涵盖了用于通过拦截在软件组件之间传递的函数调用、消息、或事件来改变或增加操作系统、应用程序、或其他软件组件的行为的技术。而处理这种被拦截的函数调用、事件或消息的代码就被称为钩子函数。钩子通常用于各种目标,包括对功能进行调试和对功能进行扩展。其示例可以包括在触摸事件传递到应用程序之前拦截它们,或者拦截系统调用(system call)、或者系统函数行为、函数执行结果等,以监视或修改应用程序或其他组件的功能等等。本实施例即可采用钩子函数接管所述应用程序运行时接收到的事件信息。
应用程序收到系统发送的事件信息,将先发送到该代理实例,处理后再发送给原InputEventReceiver。
步骤S200:对所述事件信息进行重新分配形成新事件信息,将所述新事件信息返回所述输入事件接收器。
当钩子函数监控并拦截到事件信息后,将会调用上述的替换的函数对事件信息进行重新分配,此处将生成InputEventReceiver的代理实例。替换的函数中,可以通过dispatchInputEvent方法对事件信息进行重新分配,即对用户触控事件信息和模拟触控事件信息进行重新分配,例如可以对用户触控事件信息和模拟触控事件信息的响应顺序进行分配,使得系统知道如何响应用户触控事件信息和模拟触控事件信息,例如可以同时响应。这过程中,可能会调用到enqueueInputEvent方法和/或doProcessInputEvents方法,因此还可以通过enqueueInputEvent方法和/或doProcessInputEvents方法对事件信息进行重新分配。
上述的enqueueInputEvent方法,将对QueuedInputEvent方法的循环利用,并将事件加入队列,接下来如果该事件需要立即被处理,则直接调用doProcessInputEvents方法来处理下一个入队的事件。
新事件信息生成后,将被返回至输入事件接收器。
步骤S300:所述输入事件接收器根据所述新事件信息分发事件给目标对象。这里的目标对象,可以是目标应用程序,或者目标应用程序的目标Activity(活动组件)。
输入事件接收器,即InputEventReceiver,将会根据所述新事件信息通过deliverInputEvent方法分发事件给目标对象。根据所述新事件信息分发事件给目标对象后,通过dispatchTouchEvent()方法再次分发事件给目标Activity其本身,或目标Activity包含的ViewGroup或View以进行响应。
事件分发顺序通常是:Activity(Window)>ViewGroup>View。
事件分发过程由dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()三个方法协助完成。
图2为一个实施例的模拟触控装置模块示意图。对应上述的对应用程序安装文件进行预处理的方法,本发明还提供一种对应用程序安装文件进行预处理的装置,包括:HOOK模块100、分配模块200和分发模块300。
HOOK模块100用于通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息,所述事件信息包括用户触控事件信息和模拟触控事件信息;分配模块200用于对所述事件信息进行重新分配形成新事件信息,将所述新事件信息返回所述输入事件接收器;分发模块300用于使得所述输入事件接收器根据所述新事件信息分发事件给目标对象。
HOOK模块100通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息,所述事件信息包括用户触控事件信息和模拟触控事件信息。
这里的模拟触控事件,是在用户本身并没有进入输入操作下模拟用户输入的触控事件,可以是应用程序(如下述的目标应用程序)或脚本在模拟用户输入,因此模拟触控事件信息可以由应用程序或脚本生成。
所述脚本包括:获取模块、遍历模块和模拟模块。获取模块用于在目标应用程序运行时获取目标应用程序的页面;遍历模块用于根据预设方向参数在预设区域内遍历所述页面的当前颜色,判断预设特征数组中的颜色信息与当前颜色的相似度是否超过预设阈值;若是,则模拟模块对当前颜色对应的位置实施模拟触控。
以下描述下脚本生成模拟触控事件信息的过程。HOOK模块100在通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息之前,所述脚本用于执行如下步骤1~3:
步骤1:获取模块在目标应用程序运行时获取目标应用程序页面,例如游戏页面。
获取模块可以通过截图或获取帧缓存以获取目标应用程序页面,以下简单介绍下在安卓系统中的几种实现方法。
1、从ViewDrawingCache获取目标应用程序的view。
2、通过DecorView可以获取目标应用程序的view。示例代码如下:
View decorView=pActivity.getWindow().getDecorView();
decorView.setDrawingCacheEnabled(true);//建立drawingCachedecorView.buildDrawingCache();
bitmap=decorView.getDrawingCache();//从cache中获得bitmapdecorView.destroyDrawingCache();//用完之后需要释放资源
3、一些游戏是通过GLSurface来绘图的,上述方法无法正常获得截图,需要获得GLSurfaceView中的frameBuffer(帧缓冲)。要获得帧缓冲,首先需要去重写GLSurfaceView的onDrawFrame方法,然后通过回调方法中的参数gl的glReadPixels来获取buffer,示例代码如下:
gl.glReadPixels(x,y,w,h,GL10.GL_RGBA,GL10.GL_UNSIGNED_BYTE,intBuffer);
从而就可以获得一些游戏画面的帧缓冲。
使用这个方法可能会碰到以下问题:就是不能重写目标应用程序的GLSurfaceView中的onDrawFrame方法,也就意味着不能获取到gl对象来读取frameBuffer。
解决方案:通过queueEvent(Runnable r)方法post一个事件去运行,将代码放到Runnable中然后post到GL的队列中,在Runnable中获取gl对象。示例代码如下:
EGL10egl=(EGL10)EGLContext.getEGL();
GL10gl=(GL10)egl.eglGetCurrentContext().getGL();
4、使用MediaProjection截图。大概过程如下:
申请屏幕录制权限;
在onActivityResult中得到初始化数据初始化MediaProjectManager;
创建ImageReader并注册listener;
创建VirturlDisplay,设置ImageReader;
在监听回调中获取数据。
步骤2:遍历模块根据预设方向参数在预设区域内遍历所述页面的当前颜色,判断预设特征数组中的颜色信息与当前颜色的相似度是否超过预设阈值;若是,模拟模块执行步骤3。
用于辅助游戏的辅助脚本,绝大多数都是帮助玩家完成一些冗余琐碎的操作,而实现这些操作就需要脚本能够识别游戏内的图标(例如按键)、图案(场景)等内容,然后才能自动模拟一系列特定的点击或者移动拖拽操作。因此,在本步骤需要识别指定的图标(例如按键)或图案(场景),而识别图标或图案则可以通过颜色来进行识别。
预设方向参数是确定遍历的起点以及遍历方向的参数,也即将从页面的该起点位置开始遍历,在预设区域根据遍历方向(例如水平方向从左到右,垂直方向从上到下)一个点一个点的进行遍历。在安卓系统中,可以应用findColorInRegionFuzzy方法和findMultiColorInRegionFuzzy方法进行遍历匹配颜色,前者表示模糊区域找色,后者表示区域多点找色。
对于指定的图标或图案,通常需要多个点的颜色分布来识别。因此,首先需要定义这些指定的图标或图案的特征参数,形成特征数组。
事先获取到需要监控的页面后,可以将指定的图标或图案的某个点(例如中心点)作为特征点,然后在特征点周围(图标或图案的范围内)取多个周边点,通过这些点的颜色分布来识别对应的图标或图案。又或者,例如使用边缘特征提取算法计算出若干个周边点,再取出这些周边心的中心点作为特征点。
然后记录特征点的颜色、每个周边点所在位置的颜色、以及周边点与特征点的位置差值,将上述数据作为上述的特征数组的内容。因此,在一些实施例中,预设特征数组中的颜色信息包括特征点颜色信息、周边点颜色信息、特征点与周边点之间的位置差值信息。而在一些实施例中,也可以记录特征点的颜色、特征点与每个周边点的颜色差值、以及周边点与特征点的位置差值,将上述数据作为上述的特征数组的内容,即预设特征数组中的颜色信息包括特征点颜色信息、特征点与周边点之间的颜色差值信息、特征点与周边点之间的位置差值信息。
在一些实施例中,遍历模块用于:判断所述特征点颜色信息与当前颜色的相似度是否超过第一预设阈值;若是,判断所述周边点颜色信息与当前颜色的周边点颜色的相似度是否超过第二预设阈值。即遍历模块先判断是否匹配特征点,匹配后再判断周边点是否匹配,提高匹配的效率。
步骤3:遍历模块识别指定的图标或图案后,模拟模块就可以对其相应的位置进行模拟触控,即对所述的当前颜色对应的位置实施模拟触控。在安卓系统中,可以通过例如touchDown方法(模拟按下事件)、touchMove方法(模拟滑动事件)和touchUp方法(模拟抬起事件)进行模拟,从而生成模拟触控事件(输入事件)。
安卓系统中,当有输入事件到达native层时,InputEventReceiver将会接收到该输入事件,这就是Framework层处理输入事件的开端。因此,输入事件接收器可以为InputEventReceiver类以及其包括的方法函数。
以下是InputEventReceiver注册到系统的示例代码:
在InputEventReceiver的构造函数中,有一个nativeInit方法的调用,将生成的实例传给native层,每当有输入事件时就会派发到这个实例上。
相对应的还有注销的方法:
这里的finalized参数主要是用来区分是主动注销处理,还是由于GC(GabageCollection,垃圾回收)导致的注销处理。
因此,HOOK模块100可以通过预埋设的钩子函数监控nativeInit方法和/或nativeDispose方法以监控并截获原本发给输入事件接收器的事件信息。在应用程序启动的时候,预埋设的钩子函数找到上述两个方法在native层的函数地址,然后替换为下述重新分配步骤中需要调用的函数的地址,从而完成HOOK。当应用程序生成一个InputEventReceiver的实例时会调用替换的函数,此处将生成InputEventReceiver的代理实例,替代掉应用程序的实例。应用程序收到系统发送的事件信息,将先发送到该代理实例,处理后再发送给原InputEventReceiver。
所述的术语HOOK(钩子)涵盖了用于通过拦截在软件组件之间传递的函数调用、消息、或事件来改变或增加操作系统、应用程序、或其他软件组件的行为的技术。而处理这种被拦截的函数调用、事件或消息的代码就被称为钩子函数。钩子通常用于各种目标,包括对功能进行调试和对功能进行扩展。其示例可以包括在触摸事件传递到应用程序之前拦截它们,或者拦截系统调用(system call)、或者系统函数行为、函数执行结果等,以监视或修改应用程序或其他组件的功能等等。本实施例即可采用钩子函数接管所述应用程序运行时接收到的事件信息。
应用程序收到系统发送的事件信息,将先发送到该代理实例,处理后再发送给原InputEventReceiver。
分配模块200对所述事件信息进行重新分配形成新事件信息,将所述新事件信息返回所述输入事件接收器。
当钩子函数监控并拦截到事件信息后,分配模块200将会调用上述的替换的函数对事件信息进行重新分配,此处将生成InputEventReceiver的代理实例。替换的函数中,分配模块200可以通过dispatchInputEvent方法对事件信息进行重新分配,即对用户触控事件信息和模拟触控事件信息进行重新分配,例如可以对用户触控事件信息和模拟触控事件信息的响应顺序进行分配,使得系统知道如何响应用户触控事件信息和模拟触控事件信息,例如可以同时响应。这过程中,可能会调用到enqueueInputEvent方法和/或doProcessInputEvents方法,因此分配模块200还可以通过enqueueInputEvent方法和/或doProcessInputEvents方法对事件信息进行重新分配。
上述的enqueueInputEvent方法,将对QueuedInputEvent方法的循环利用,并将事件加入队列,接下来如果该事件需要立即被处理,则直接调用doProcessInputEvents方法来处理下一个入队的事件。
新事件信息生成后,将被返回至输入事件接收器。
分发模块300所述输入事件接收器根据所述新事件信息分发事件给目标对象。这里的目标对象,可以是目标应用程序,或者目标应用程序的目标Activity(活动组件)。
输入事件接收器,即InputEventReceiver,将会根据所述新事件信息通过deliverInputEvent方法分发事件给目标对象。根据所述新事件信息分发事件给目标对象后,通过dispatchTouchEvent()方法再次分发事件给目标Activity其本身,或目标Activity包含的ViewGroup或View以进行响应。
事件分发顺序通常是:Activity(Window)>ViewGroup>View。
事件分发过程由dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()三个方法协助完成。
本方法还提供一种移动终端,其包括:触敏显示器;一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于:执行根据上述任一项实施例所述的模拟触控方法。
本发明实施例还提供了移动终端,如图3所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point ofSales,销售终端)、车载电脑等任意终端设备,以终端为手机为例:
图3示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图3,手机包括:射频(Radio Frequency,RF)电路1510、存储器1520、输入单元1530、显示单元1540、传感器1550、音频电路1560、无线保真(wireless fidelity,Wi-Fi)模块1570、处理器1580、以及电源1590等部件。本领域技术人员可以理解,图3中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图3对手机的各个构成部件进行具体的介绍:
RF电路1510可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1580处理;另外,将设计上行的数据发送给基站。通常,RF电路1510包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier,LNA)、双工器等。此外,RF电路1510还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GlobalSystem of Mobile communication,GSM)、通用分组无线服务(General Packet RadioService,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器1520可用于存储软件程序以及模块,处理器1580通过运行存储在存储器1520的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声纹播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1530可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1530可包括触控面板1531以及其他输入设备1532。触控面板1531,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1531上或在触控面板1531附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1531可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1580,并能接收处理器1580发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1531。除了触控面板1531,输入单元1530还可以包括其他输入设备1532。具体地,其他输入设备1532可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1540可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1540可包括显示面板1541,可选的,可以采用液晶显示器(LiquidCrystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板1541。进一步的,触控面板1531可覆盖显示面板1541,当触控面板1531检测到在其上或附近的触摸操作后,传送给处理器1580以确定触摸事件的类型,随后处理器1580根据触摸事件的类型在显示面板1541上提供相应的视觉输出。虽然在图3中,触控面板1531与显示面板1541是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1531与显示面板1541集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器1550,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1541的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1541和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1560、扬声器1561,传声器1562可提供用户与手机之间的音频接口。音频电路1560可将接收到的音频数据转换后的电信号,传输到扬声器1561,由扬声器1561转换为声纹信号输出;另一方面,传声器1562将收集的声纹信号转换为电信号,由音频电路1560接收后转换为音频数据,再将音频数据输出处理器1580处理后,经RF电路1510以发送给比如另一手机,或者将音频数据输出至存储器1520以便进一步处理。
Wi-Fi属于短距离无线传输技术,手机通过Wi-Fi模块1570可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图3示出了Wi-Fi模块1570,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器1580是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1520内的软件程序和/或模块,以及调用存储在存储器1520内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1580可包括一个或多个处理单元;优选的,处理器1580可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1580中。
手机还包括给各个部件供电的电源1590(比如电池),优选的,电源可以通过电源管理系统与处理器1580逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本发明实施例中,该终端所包括的处理器1580还具有以下功能:,通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息,所述事件信息包括用户触控事件信息和模拟触控事件信息;对所述事件信息进行重新分配形成新事件信息,将所述新事件信息返回所述输入事件接收器;所述输入事件接收器根据所述新事件信息分发事件给目标对象。也即处理器1580具备执行上述的任一实施例调整微件透明度的方法的功能,在此不再赘述。
上述的模拟触控方法、装置和移动终端,通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息,所述事件信息包括用户触控事件信息和模拟触控事件信息;对所述事件信息进行重新分配形成新事件信息,将所述新事件信息返回所述输入事件接收器;所述输入事件接收器根据所述新事件信息分发事件给目标对象;通过截获事件信息并对事件信息进行重新分配,可以有效避免同时输出冲突的问题,而且无需事先向系统申请shell/root权限,使用便利性得到有效提高,有效提高了用户体验。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (31)

1.一种模拟触控方法,其特征在于,包括如下步骤:
通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息,所述事件信息包括用户触控事件信息和模拟触控事件信息;
对所述事件信息进行重新分配形成新事件信息,将所述新事件信息返回所述输入事件接收器;
所述输入事件接收器根据所述新事件信息分发事件给目标对象。
2.根据权利要求1所述的模拟触控方法,其特征在于,所述模拟触控事件信息由应用程序或脚本生成。
3.根据权利要求2所述的模拟触控方法,其特征在于,通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息之前,所述脚本生成所述模拟触控事件信息,包括步骤:
当目标应用程序运行时获取其页面;
根据预设方向参数在预设区域内遍历所述页面的当前颜色,判断预设特征数组中的颜色信息与当前颜色的相似度是否超过预设阈值;
若是,对当前颜色对应的位置实施模拟触控。
4.根据权利要求3所述的模拟触控方法,其特征在于,所述预设特征数组中的颜色信息包括特征点颜色信息和周边点颜色信息;
判断预设特征数组中的颜色信息与当前颜色的相似度是否超过预设阈值的步骤包括:
判断所述特征点颜色信息与当前颜色的相似度是否超过第一预设阈值;若是,判断所述周边点颜色信息与当前颜色的周边点颜色的相似度是否超过第二预设阈值。
5.根据权利要求4所述的模拟触控方法,其特征在于,所述预设特征数组中的颜色信息包括特征点颜色信息、周边点颜色信息、特征点与周边点之间的位置差值信息。
6.根据权利要求4所述的模拟触控方法,其特征在于,所述预设特征数组中的颜色信息包括特征点颜色信息、特征点与周边点之间的颜色差值信息、特征点与周边点之间的位置差值信息。
7.根据权利要求3所述的模拟触控方法,其特征在于,通过截图或获取帧缓存以获取目标应用程序页面。
8.根据权利要求1所述的模拟触控方法,其特征在于,对所述事件信息进行重新分配形成新事件信息的步骤中,对所述用户触控事件信息和模拟触控事件信息的响应顺序进行分配。
9.根据权利要求1所述的模拟触控方法,其特征在于,所述目标对象包括目标应用程序。
10.根据权利要求1所述的模拟触控方法,其特征在于,所述方法应用于安卓系统,所述输入事件接收器为InputEventReceiver类。
11.根据权利要求10所述的模拟触控方法,其特征在于,通过预埋设的钩子函数监控nativeInit方法和/或nativeDispose方法以截获原本发给输入事件接收器的事件信息。
12.根据权利要求10所述的模拟触控方法,其特征在于,通过dispatchInputEvent方法对所述事件信息进行重新分配。
13.根据权利要求12所述的模拟触控方法,其特征在于,还通过enqueueInputEvent方法和/或doProcessInputEvents方法对所述事件信息进行重新分配。
14.根据权利要求10所述的模拟触控方法,其特征在于,所述输入事件接收器根据所述新事件信息通过deliverInputEvent方法分发事件给目标对象。
15.根据权利要求14所述的模拟触控方法,其特征在于,所述目标对象包括目标Activity;根据所述新事件信息分发事件给目标对象后,通过dispatchTouchEvent()方法再次分发事件给目标Activity其本身,或其包含的ViewGroup或View响应。
16.一种对应用程序安装文件进行预处理的装置,其特征在于,包括:
HOOK模块,用于通过预埋设的钩子函数截获原本发给输入事件接收器的事件信息,所述事件信息包括用户触控事件信息和模拟触控事件信息;
分配模块,用于对所述事件信息进行重新分配形成新事件信息,将所述新事件信息返回所述输入事件接收器;
分发模块,用于使得所述输入事件接收器根据所述新事件信息分发事件给目标对象。
17.根据权利要求16所述的模拟触控装置,其特征在于,所述模拟触控事件信息由应用程序或脚本生成。
18.根据权利要求17所述的模拟触控装置,其特征在于,所述脚本包括:获取模块、遍历模块和模拟模块;
获取模块,用于在目标应用程序运行时获取目标应用程序的页面;
遍历模块,用于根据预设方向参数在预设区域内遍历所述页面的当前颜色,判断预设特征数组中的颜色信息与当前颜色的相似度是否超过预设阈值;
若是,则模拟模块对当前颜色对应的位置实施模拟触控。
19.根据权利要求18所述的模拟触控装置,其特征在于,所述预设特征数组中的颜色信息包括特征点颜色信息和周边点颜色信息;
所述遍历模块用于:
判断所述特征点颜色信息与当前颜色的相似度是否超过第一预设阈值;若是,判断所述周边点颜色信息与当前颜色的周边点颜色的相似度是否超过第二预设阈值。
20.根据权利要求19所述的模拟触控装置,其特征在于,所述预设特征数组中的颜色信息包括特征点颜色信息、周边点颜色信息、特征点与周边点之间的位置差值信息。
21.根据权利要求19所述的模拟触控装置,其特征在于,所述预设特征数组中的颜色信息包括特征点颜色信息、特征点与周边点之间的颜色差值信息、特征点与周边点之间的位置差值信息。
22.根据权利要求8所述的模拟触控装置,其特征在于,所述获取模块通过截图或获取帧缓存以获取目标应用程序页面。
23.根据权利要求16所述的模拟触控装置,其特征在于,所述分配模块用于:对所述用户触控事件信息和模拟触控事件信息的响应顺序进行分配。
24.根据权利要求16所述的模拟触控装置,其特征在于,所述目标对象包括目标应用程序。
25.根据权利要求16所述的模拟触控装置,其特征在于,所述方法应用于安卓系统,所述输入事件接收器为InputEventReceiver类。
26.根据权利要求25所述的模拟触控装置,其特征在于,所述HOOK模块用于:通过预埋设的钩子函数监控nativeInit方法和/或nativeDispose方法以截获原本发给输入事件接收器的事件信息。
27.根据权利要求25所述的模拟触控装置,其特征在于,所述分配模块用于:通过dispatchInputEvent方法对所述事件信息进行重新分配。
28.根据权利要求27所述的模拟触控装置,其特征在于,所述分配模块用于:还通过enqueueInputEvent方法和/或doProcessInputEvents方法对所述事件信息进行重新分配。
29.根据权利要求25所述的模拟触控装置,其特征在于,所述分发模块用于:使得所述输入事件接收器根据所述新事件信息通过deliverInputEvent方法分发事件给目标对象。
30.根据权利要求29所述的模拟触控装置,其特征在于,所述目标对象包括目标Activity;所述分发模块根据所述新事件信息分发事件给目标对象后,通过dispatchTouchEvent()方法再次分发事件给目标Activity其本身,或其包含的ViewGroup或View响应。
31.一种移动终端,其特征在于,其包括:
触敏显示器;
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于:执行根据权利要求1~15任一项所述的模拟触控方法。
CN201711418281.2A 2017-12-25 2017-12-25 模拟触控方法、装置和移动终端 Active CN108009033B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711418281.2A CN108009033B (zh) 2017-12-25 2017-12-25 模拟触控方法、装置和移动终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711418281.2A CN108009033B (zh) 2017-12-25 2017-12-25 模拟触控方法、装置和移动终端

Publications (2)

Publication Number Publication Date
CN108009033A true CN108009033A (zh) 2018-05-08
CN108009033B CN108009033B (zh) 2021-07-13

Family

ID=62061002

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711418281.2A Active CN108009033B (zh) 2017-12-25 2017-12-25 模拟触控方法、装置和移动终端

Country Status (1)

Country Link
CN (1) CN108009033B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109107148A (zh) * 2018-08-08 2019-01-01 Oppo广东移动通信有限公司 控制方法、装置、存储介质及移动终端
CN110825605A (zh) * 2019-11-06 2020-02-21 北京博睿宏远数据科技股份有限公司 一种模拟用户操作的方法、装置、设备及储存介质
CN111399739A (zh) * 2020-03-11 2020-07-10 努比亚技术有限公司 触摸事件转换处理方法、终端和计算机可读存储介质
WO2021023110A1 (zh) * 2019-08-07 2021-02-11 南京中兴新软件有限责任公司 一种移动轨迹的绘制方法、终端、装置及计算机可读存储介质
CN112667488A (zh) * 2020-12-29 2021-04-16 深圳市慧为智能科技股份有限公司 按键处理方法、装置、设备及计算机可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591658A (zh) * 2011-12-28 2012-07-18 奇智软件(北京)有限公司 一种消息处理方法及装置
CN103729065A (zh) * 2013-12-17 2014-04-16 深圳市慧为智能科技有限公司 触控操作映射到实体按键的系统及方法
CN104052638A (zh) * 2014-06-27 2014-09-17 北京蓝汛通信技术有限责任公司 模块间冲突检测方法、装置及服务器
EP2818991A1 (en) * 2013-06-28 2014-12-31 Samsung Electronics Co., Ltd Electronic apparatus and touch sensing method thereof
CN105513038A (zh) * 2014-10-20 2016-04-20 网易(杭州)网络有限公司 图像匹配方法及手机应用测试平台
CN107357458A (zh) * 2017-07-04 2017-11-17 广东欧珀移动通信有限公司 触摸按键的响应方法、装置、存储介质及移动终端

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591658A (zh) * 2011-12-28 2012-07-18 奇智软件(北京)有限公司 一种消息处理方法及装置
EP2818991A1 (en) * 2013-06-28 2014-12-31 Samsung Electronics Co., Ltd Electronic apparatus and touch sensing method thereof
CN103729065A (zh) * 2013-12-17 2014-04-16 深圳市慧为智能科技有限公司 触控操作映射到实体按键的系统及方法
CN104052638A (zh) * 2014-06-27 2014-09-17 北京蓝汛通信技术有限责任公司 模块间冲突检测方法、装置及服务器
CN105513038A (zh) * 2014-10-20 2016-04-20 网易(杭州)网络有限公司 图像匹配方法及手机应用测试平台
CN107357458A (zh) * 2017-07-04 2017-11-17 广东欧珀移动通信有限公司 触摸按键的响应方法、装置、存储介质及移动终端

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109107148A (zh) * 2018-08-08 2019-01-01 Oppo广东移动通信有限公司 控制方法、装置、存储介质及移动终端
CN109107148B (zh) * 2018-08-08 2022-04-19 Oppo广东移动通信有限公司 控制方法、装置、存储介质及移动终端
WO2021023110A1 (zh) * 2019-08-07 2021-02-11 南京中兴新软件有限责任公司 一种移动轨迹的绘制方法、终端、装置及计算机可读存储介质
CN110825605A (zh) * 2019-11-06 2020-02-21 北京博睿宏远数据科技股份有限公司 一种模拟用户操作的方法、装置、设备及储存介质
CN111399739A (zh) * 2020-03-11 2020-07-10 努比亚技术有限公司 触摸事件转换处理方法、终端和计算机可读存储介质
CN112667488A (zh) * 2020-12-29 2021-04-16 深圳市慧为智能科技股份有限公司 按键处理方法、装置、设备及计算机可读存储介质
CN112667488B (zh) * 2020-12-29 2022-07-26 深圳市慧为智能科技股份有限公司 按键处理方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN108009033B (zh) 2021-07-13

Similar Documents

Publication Publication Date Title
CN108009033A (zh) 模拟触控方法、装置和移动终端
CN107562864A (zh) 一种广告屏蔽方法、移动终端及计算机可读存储介质
CN107861670A (zh) 双屏终端的交互显示方法、双屏终端和计算机存储介质
CN108595201A (zh) 一种应用程序更新方法及移动终端
CN108595089A (zh) 一种虚拟按键控制方法及移动终端
CN108153778A (zh) 网页保存方法、网页读取方法及装置
CN108762634A (zh) 一种控制方法及终端
CN108646958A (zh) 一种应用程序启动方法及终端
CN107632768A (zh) 按键使用方法、终端及计算机可读存储介质
CN109284144A (zh) 一种快应用处理方法及移动终端
CN109117041A (zh) 一种消息处理方法及移动终端
CN109040441A (zh) 应用分身显示方法、移动终端及计算机可读存储介质
CN108320148A (zh) 一种资源转移方法及相关设备
CN109460170A (zh) 屏幕扩展及交互方法、终端及计算机可读存储介质
CN108446156A (zh) 一种应用程序控制方法及终端
CN110046013A (zh) 一种界面显示方法及终端设备
CN110888705A (zh) 处理未读消息角标的方法及电子设备
CN107957841A (zh) 滚动截屏方法及装置
CN109117054A (zh) 一种显示控制方法及终端
CN108920040A (zh) 一种应用图标整理方法及移动终端
CN109491670A (zh) 一种页面显示方法及终端设备
CN108833690A (zh) 权限管控方法、终端及计算机可读存储介质
CN108762829A (zh) 一种用于图像美化的方法、客户端及终端
CN108804151A (zh) 一种重启应用程序的方法及终端
CN108491219A (zh) 一种应用的更新方法及移动终端

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant