2011-06-06 39 views
2

我想监听的手机上的所有用户活动的所有事件 - 就像onTouchonClickonMenuItemClicked等 对于这一点,我做了延伸性的超类,和所有的活动,从这个扩展类。的Android监听应用

public class TopActivity extends Activity { 

} 


public class screen1 extends TopActivity { 

} 

对于听我在这样的超类实现监听功能的事件 - onTouch()onClick()onMenuOpened(),等等。所有这些调用具有当任何事件发生时要运行的代码相同的功能。

问题是我必须实现每个监听器。有一个更好的方法吗?当应用程序中有任何用户事件时,我只想运行同一段代码。

+0

这里http://stackoverflow.com检查我的答案/问题/ 7618227 /可-I结合 - 我的代码 - 到 - 一些实物-的全局活动/ 7618263#7618263 – 2011-10-07 07:13:54

回答

1

没有OnEventListener接口。你需要实现你想听的每一个。

你可以这样来做:

public class TopActivity extends Activity implements OnClickListener, 
    OnTouchListener, OnKeyListener, OnLongClickListener /*etc*/ { 

    public void onClick() { 
    doSomething(); 
    } 

    public boolean onKey(View v, int keyCode, KeyEvent event) { 
    doSomething(); 
    } 

    // etc 
} 
1

我们有同样的问题,所以我们在几个月前开发了Android HCI提取。它用于跟踪和监控多模式应用中的用户和系统交互事件(例如,触摸,按键,滚动,系统提供的元素数量等)。

它很容易集成和使用。在教程中,您可以看到只需要几行代码。而且,使用这种解决方案,您不必实现所有听众;您只需将代码添加到/android.hci.extractor/src/org/mmi/facades/YourFacade.java类中的方法中。

下面的链接: - Android的HCI提取代码:http://code.google.com/p/android-hci-extractor/ - MIM项目(包括有关该工具集成和使用教程):http://www.catedrasaes.org/trac/wiki/MIM

我希望它可以帮助你!

0

在Activity类中有一些方法可以覆盖,这可能有所帮助。当我必须拦截所有视图控件的所有事件以重置空闲超时倒数时,我使用了这个功能。这听起来像你有一个类似的宽范围的需要同样处理所有的事件,所以这可能只是你需要什么:

dispatchTouchEvent()

dispatchKeyEvent()