Android Dev:从屏幕(软)键盘获取关键事件

时间:2010-12-04 21:42:38

标签: android keyboard-events

我正在开发一个Android程序来分析用户的文本输入并测量输入速度,错误率,输入单个字符的平均按键。通过这样做,我可以比较不同输入方法的特征。为此,我需要计算并记录用户在文本输入过程中所做的所有按键操作。

例如,使用基本qwerty键盘的用户必须为每个字母按至少一个键。但是,使用具有单词完成功能的键盘的用户需要按较少的键。但是(平均)制造了多少台按键?单词完成是否真的能提高打字速度?这些是我的计划有助于回答的问题。

阅读其他帖子,我知道(默认情况下),屏幕键盘不会为所有按键发送键事件。物理(硬件)键盘可以,但大多数移动设备没有物理键盘。我也知道我可以实现一个TextWatcher来检测在EditText字段中输入字母的时间。但是,某些IME可能要求用户按一系列键来输入单个字母(或单词)。我需要处理中间键事件(即通过计数和记录按键)。

我的问题:如何在不修改IME用户体验的情况下(例如,自动完成,单词预测,T9消歧等)从IME(即使不触发键入字符的事件)捕获每个按键事件?这甚至可能吗?

提前感谢您的时间。

2 个答案:

答案 0 :(得分:0)

  

这甚至可能吗?

只有编写自己的IME,AFAIK,或者将来源提供给现有的IME并进行检测。

答案 1 :(得分:0)

你试着听TouchEvent吗?
您是否尝试使用View类中的onKeyPreIme()?有了这个,你可以在被IME消费之前抓住按键