0

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

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

我们需要对各种 IME 执行此操作,尤其是 Swype、Swiftkey 等键盘(尽管其中一个工作就足够了)

我们尝试了:

通过 addTextChangedListener 的 TextWatcher - 随机调用 beforeTextChanged/afterTextChanged 似乎是不可靠的,即使在一个手势内或在一个手势内多次

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

理想的情况是: 一种在“触摸”事件被传递给 IME 以通过 System.currentTimeMillis() 记录当前时间之前捕获“触摸”事件的方法,在手势结束后相同的“之后”,即当手指从显示器上松开时

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

如果你曾经在柏林并且需要一个地方来……获取饼干,你会得到额外的饼干 :)

4

1 回答 1

0

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

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

听起来您在 EditText 或您的应用程序上所做的任何事情都可能不够,因为 IME 是 Android 中的一个单独模块,因此您将无法获得有关自动更正或预测或类似内容的任何信息(不同的 IME 有不同的此类功能)。您只能从文本条目中获取输入(或删除)的文本。

我能想到的最好的方法是让您开发自己的 IME,然后您可以在其中记录任何您喜欢的内容。

为此,我建议您首先从 Android 开发人员那里查看这篇文章:http: //developer.android.com/guide/topics/text/creating-input-method.html

然后你可以在那里查看默认拉丁输入法的源代码: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 框架本身,所以你不能像现在这样将它真正构建为一个单独的模块。

希望有帮助

于 2013-05-20T20:53:15.477 回答