我一直试图截取用户与ui交互生成的motionevents和keyevents。到目前为止,我已经探索了这些选择:
DEX注射(太复杂)
扩展我的活动类,同时使用DispatchTouchEvent截取MotionEvents,记录事件并将其传递给Super。DispatchTouchEvent(这将要求将所有活动类扩展到我修改过的类,并可能限制已经使用DispatchTouchEvent的应用程序)
使用检测向应用程序添加侦听器(尝试失败,不知道是否可能)
基本上,我要做的是实现一个事件记录器,这样通过捕获运动和keyevents,我可以创建记录的回放。我要做的一个限制是能够将此录制附加到任何Android应用程序,因此我需要最小化应用程序本身中的录制器代码修改,例如,我想添加一些JAR,然后在应用程序中初始化它们,如下所示:
public class Calculator extends Activity {
public void onCreate(Bundle savedInstanceState) {
initialize recorder here
//application code
}
//calculator application code here
}
注意:将activity类扩展到一个特殊类,该类具有使用dispatchtouchEvent捕获事件的代码,然后从该特殊类扩展其他每个activity类,这不是一个好主意,因为如果原始活动具有dispatchtouchEvent的某些代码,则该函数在扩展的特殊类中不起作用。
从操作系统的角度来看,不改变操作系统代码的解决方案也是受欢迎的(包括c,c++)
最佳答案
你提到过使用事件侦听器,你读过这一页吗?
http://developer.android.com/guide/topics/ui/ui-events.html