IME和捕捉(触摸)事件

时间:2013-05-20 16:44:00

标签: android logging touch-event ime

我目前正在尝试获得心理学文凭,我想写一些关于智能手机的不同类型的键盘。为了研究这个领域,我需要一种测量时间的工具。作为Android编程的新手,我的朋友正在帮助我,但我们陷入困境。 这是我们需要的,也是我们尝试的。我非常感谢任何帮助=)

我们需要一种在IME中的用户输入开始之前以及在IME中的用户输入结束之后调用函数的方法。 (我们只需要这个时间记录,我们不需要实际的输入。) 我们还需要在用户输入用于选择自动更正开始/结束之前调用函数。

我们需要为各种IME特别是键盘执行此操作 像Swype,Swiftkey等(虽然其中一个工作就足够了)

我们尝试过:

TextWatcher通过addTextChangedListener       - 即使在一个手势中,随机调用ofTextChanged / afterTextChanged之前的时间似乎也不可靠        或在手势中多次

继承实现OnTouchListener的EditText, 使用onTouch() - 当使用swype时,似乎根本没有被调用,所以要么我们做错了,要么ime / swpye消耗这些事件,    也尝试了onKeyPreIme,没有被称为

理想的是: 一种捕捉"触摸"将事件传递给IME以通过System.currentTimeMillis()记录当前时间之前的事件 同样的"""手势结束,即当手指从显示器上释放时

我们不需要实际代码,指向正确命令/文档/小部件的链接会很好。

如果你曾经在柏林并且需要一个地方......获得饼干,你会获得奖励饼干:)

1 个答案:

答案 0 :(得分:0)

不确定这是否是一个答案,但是......

您的计划是在Android应用程序中编写,您可以在任何人的设备上分发和运行吗?

听起来像你在EditText上所做的一切,或者你的应用程序可能还不够,因为IME是Android中的一个独立模块,因此你将无法获得有关自动更正或预测或类似事件的任何信息(不同的IME有不同的这些特征)。您只能从文本条目中输入(或删除)文本。

我能想到的最好的是你开发自己的IME,然后你可以在那里记录你喜欢的任何东西。

为了解决这个问题,我建议你先从Android开发者那里查看这篇文章: http://developer.android.com/guide/topics/text/creating-input-method.html

然后你可以查看默认拉丁语IME的源代码: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/4.0.1_r1/com/android/inputmethod/latin/LatinIME.java

虽然这个可能比你需要的要多得多,并且(我认为)有一些链接到Android框架本身,所以你不能像现在这样把它作为一个单独的模块构建。

希望有所帮助