微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android在textEdit中跟踪按键释放和按键之间的时间

如何解决Android在textEdit中跟踪按键释放和按键之间的时间

我正在尝试测量在文本框中按下键的时间,但我尝试过的任何方法都没有用。我计划获得触发keydown的keyevent和触发keyup的keyevent并减去它们的时间。我已经尝试过使用onKeyUp和onKeyDown,但是它们不适用于文本框。因此,我转向了OnKeyListener,但这似乎只能抓住ACTION_UP而不是ACTION_DOWN。

这是我的代码

        EditText journalText = (EditText) findViewById(R.id.journalText);
        journalText.setonKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View view,int keyCode,KeyEvent event) {
                if(event.getAction() == KeyEvent.ACTION_DOWN) {
                    switch (keyCode) {
                        case KeyEvent.KEYCODE_E:
                            Date date = new Date();
                            long time = date.getTime();
                            Log.d("apple","Time: " + time);
                            timedown.add(Long.toString(time));
                            Log.d("apple","E was pressed Down");
                    }
                }
                else if(event.getAction() == KeyEvent.ACTION_UP){
                    switch(keyCode){
                        case KeyEvent.KEYCODE_R:
                            Date date = new Date();
                            long time = date.getTime();
                            Log.d("apple","R was pressed Up");
                    }
                }
                return false;
            }
        });

r和e交替按下的结果仅显示“ R被按下向上”输出,而没有E被按下。

在没有文本框的不同页面上使用onKeyUp和onKeyDown时,会同时注册两种类型的事件,因此我认为此问题不是由Android Studio中的软键盘引起的。

解决方法

您已经使用的硬件 键盘。

但是您不能使用Android中的屏幕键盘来做到这一点,因为尽管软件键盘可以像硬件键盘一样呈现自己,但它们没有义务,因此它们不起作用有按键,但有批输入。参见InputConnection

简而言之,您不能假设用户使用带有键的东西来打字,而Android应用程序应能够与用户选择的键盘一起使用,因此Android不允许您强迫用户以您所使用的方式输入文本希望他们喜欢。

您需要回答的一些问题:

  • 您的程序如何与手势输入一起使用? (滑动,滑行输入,但是您可以选择称呼它)
  • 您的程序如何与轻拂输入一起工作,用户按下按键并在四个方向之一上轻拂以输入字符?
  • 您的程序如何与手写键盘一起使用?
  • 您的程序如何处理听写内容?
  • 您的程序将如何与音译IME配合使用?全世界一半以上的人口使用IME?

对于这些类型的输入,按键的概念没有意义,并且要求键盘作者模拟按键会限制发明新的更好的输入方法。

如果您的答案是这些键盘的用户无法使用您的应用,则Android提示您应更改应用以支持这些用户。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?