【问题标题】:IME and catching (touch) eventsIME 和捕获(触摸)事件
【发布时间】:2013-05-20 16:43:59
【问题描述】:

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

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

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

我们试过了:

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

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

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

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

如果您曾经在柏林并且需要一个地方来...获取 cookie,您将获得额外的 cookie :)

【问题讨论】:

    标签: android logging touch-event ime


    【解决方案1】:

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

    您是否计划在 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 框架本身,所以你不能像现在这样将它真正构建为一个单独的模块。

    希望有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 2011-04-18
      • 2011-08-12
      • 2014-12-11
      相关资源
      最近更新 更多