〖Android〗屏幕触屏事件录制与回放

需求:

  不管是做自动化测试的,还是传媒技术的,自动化操作Android App是一种操作需求;

  自动化的操作可以节省很多的人力资源投入;

实现:

  Android UI界面的自动化,通常有两个方法:

  1. 使用得较多的是input命令,input可以直接输入“所有按键、屏幕点击、拖动和直接输入文本内容”;

  2. 较为复杂的操作使用getevent 和 sendevent来完成,理论上可以操作一切触屏的输入;

问题:

  通常,input使用起来会特别简单方便,可以把坐标记录好,写写脚本就完事了;

  但是涉及到复杂的操作,如 长按等 input就不能完成了;

思路:

  于是还是回到了 getevent和sendevent方法,sendevent命令本身就是只简单调用一下ioctl来向 /dev/input/eventX 发送控制;

  但是由于 Shell脚本在执行过程中,效率本身就是个问题,使用Shell脚本回放录制的内容,会出现意想不到的问题,如:

    一个操作被分割成两个操作来执行, 这本身就不是我们期望的;

解决:

  所以,我写在写回放脚本时,就把 录制到的信息,制作成一个C语言文件,直接以二进制形式来执行,这样子就不会出现操作被分割的现象了;

  源代码:https://github.com/scue/android_tap_record

相关链接:

  1. sendevent.c: https://github.com/android/platform_system_core/blob/master/toolbox/sendevent.c

  2. 编译工具请使用NDK: http://developer.android.com/tools/sdk/ndk/

时间: 2024-11-10 07:32:14

〖Android〗屏幕触屏事件录制与回放的相关文章

Android的触屏事件

Android系统中的每个View的子类都包含的三种和touchevent有关的三种方法. ondispathTouchEvent(); 这个方法用来分发TouchEventonInterceptTouchEvent(); 这个方法用来拦截TouchEventonTouchEvent: 这个方法用来处理TouchEvent 每次触屏事件,都有最顶层的View的ondispathTouchEvent()接受,由这个方法进行分发.当方法返回true时 ,就将触屏事件传递给该View的OntouchE

【Android】触屏事件传递简述

一个典型的结构模型 ActivityA包含ViewGroupB,ViewGroupB包含ViewC,这里选取ViewGroupB(中间节点)作为当前节点视角 过程一:当前节点与父节点的事件关系 ActivityA只关心ViewGroupB.onDispatchTouchEvent返回值,只要在ACTION_DOWN分发过程中B.onDispatchTouchEvent()返回为true,那么后续的事件都会向B分发.至于ViewGroupB在onDispatchTouchEvent方法中是怎么处理

android实现横竖屏8个方向触屏事件的捕捉并有相对应的动画提示

1:首先来说横竖屏的问题 这里我是在onCreate方法中直接强制横屏竖屏的设置, Button btn; SurfaceView surfaceView; //初始化布局 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); addListener(); } //初始化 pri

Android 触屏事件 OnTouch onClick onTouchEvent对于触屏事件的处理和分发

Android 触屏事件 OnTouch onClick onTouchEvent对于触屏事件的处理和分发 做项目的时候经常遇到需要事件分发,很多时候我们发现当我们触发了onTouch却触发不了onClick.或者触发了View的事件却触发不了ViewGroup的事件.那么他们之间到底是什么关系呢,其实最终他们涉及的只是两个问题 OnTouch .onClick .onTouchEvent 之间的关系 OnTouch .onClick .onTouchEvent 之间的处理顺序 这里,我做了简单

转:Android随笔之——使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)

本文转载自CSDN的jzj1993,原文连接:http://blog.csdn.net/jzj1993/article/details/39158865 有时我们需要使用安卓实现在后台模拟系统按键,比如对音量进行调节(模拟音量键),关闭前台正在运行的App(模拟返回键),或者模拟触屏事件.但是对于原生安卓系统而言,后台进程关闭前台进程,甚至模拟用户事件,进而操控整个系统,是不符合系统安全原则的,如果有这样的漏洞被病毒或恶意软件所利用,会非常危险. 由于一些特殊原因,我恰巧需要实现这样的功能,而又

Android触屏事件传递(个人实践总结)

Android触屏事件传递 一:前言 之前由于做Launcher部分,涉及到许多交互的部分,因为项目过去很长时间了,最近又在做GTS,CTS的测试与修改,好多都不熟悉甚至忘记了,结合别人的文章经验(我发现有些地方和别人有出入,但自己经测试验证),加上自己的测试,今天写下文章来总结一下. 二:关于ViewGroup与其中的view视图 ViewGroup是一个容器类,一般,布局容器是继承字它的.容器里面可以存放视图,当然也可以嵌套容器,比如Relativelayout,LinearLayout等等

移动端touch触屏滑动事件、滑动触屏事件监听!

移动端touch触屏滑动事件.滑动触屏事件监听! 一.触摸事件 ontouchstart.ontouchmove.ontouchend.ontouchcancel 目前移动端浏览器均支持这4个触摸事件,包括IE.由于触屏也支持MouseEvent,因此他们的顺序是需要注意的:touchstart → mouseover → mousemove → mousedown → mouseup → click1 Apple在iOS 2.0中引入了触摸事件API,Android正迎头赶上这一事实标准,缩小

View实现事件监听DEMO(文本跟随触屏事件)

View 是一个显示的视图,内置的画布通过重写Ondraw(Canvas canvas);方法获得,同时提供图形绘制函数.触屏事件.按键事件等. 现在利用一个简单的demo演示一下几个重要的常用到的方法: import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.K

0198 触屏事件:touchstart、touchmove、touchend、touches、targetTouches、changedTouches

1.3.1 触屏事件概述 移动端浏览器兼容性较好,我们不需要考虑以前 JS 的兼容性问题,可以放心的使用原生 JS 书写效果,但是移动端也有自己独特的地方.比如触屏事件 touch(也称触摸事件),Android和 IOS 都有. touch 对象代表一个触摸点.触摸点可能是一根手指,也可能是一根触摸笔.触屏事件可响应用户手指(或触控笔)对屏幕或者触控板操作. 常见的触屏事件如下: [touchstart.touchmove.touchend都不是小驼峰.] <!DOCTYPE html> &