问题描述
|
我想听电话上的所有用户事件,例如
onTouch
,onClick
,onMenuItemClicked
等。
为此,我制作了一个扩展活动的超类,所有活动都从该类扩展。
public class TopActivity extends Activity {
}
public class screen1 extends TopActivity {
}
为了侦听事件,我已经在超类中实现了侦听器功能,例如onTouch()
,onClick()
,onMenuOpened()
等。所有这些调用相同的函数,该函数具有应在发生任何事件时运行的代码。
问题是我必须实现每个侦听器。有一个更好的方法吗?我只想在应用程序中有任何用户事件时运行同一段代码。
解决方法
没有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
}
, 我们遇到了同样的问题,因此几个月前我们开发了Android HCI Extractor。它被用来跟踪和监视多模式应用程序中的用户和系统交互事件(例如,触摸,按键,滚动,系统提供的元素数量等)。
集成和使用非常容易。在教程中,您可以看到只需要几行代码。此外,使用此解决方案,您不必实现所有侦听器;您只需要将代码添加到/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
希望对您有帮助!!
, 您可以重写Activity类中的一些方法,这些方法可能会有所帮助。当我必须拦截所有视图控件的所有事件以重置空闲超时倒计时时,使用了此方法。听起来您类似地需要广泛地处理所有事件,所以这可能正是您所需要的:
dispatchTouchEvent()
dispatchKeyEvent()