我试着测量文本框中按键的时间,但我试过的都没用。我计划得到keydown触发keyevent的时间,以及keyup触发keyevent的时间,然后减去它们。我试过使用onkeyup和onkeydown,但它们对文本框不起作用。所以,我转向一个onkeylistener,但这似乎只抓住了动作,而不是动作。
这是我的密码
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", "Time: " + time);
timedown.add(Long.toString(time));
Log.d("apple", "R was pressed Up");
}
}
return false;
}
});
交替按下r和e的结果仅显示“r被按下”输出,而没有按下e。
当在没有文本框的不同页面上使用onkeyup和onkeydown时,两种类型的事件都会被注册,所以我不认为这个问题是由androidstudio中的软键盘引起的。
1条答案
按热度按时间q8l4jmvw1#
你已经为硬件键盘工作了。
但是在android系统中,你不能用屏幕键盘来实现这一点,因为虽然软件键盘可能会像硬件键盘一样呈现自己,但它们没有义务这样做,因此它们不适用于键盘,而适用于批量输入。请参见输入连接。
简单地说,你不能假设用户是用有键的东西打字,而android应用程序则需要与用户选择的键盘配合使用,因此android不允许你强迫用户以自己喜欢的方式输入文本。
一些你需要回答的问题 :
你的程序如何处理手势输入 ? (轻扫,滑动打字,不管你怎么称呼它)
您的程序如何使用flick input,即用户按一个键,然后按四个方向中的一个来输入字符 ?
你的程序如何使用手写键盘 ?
你的程序是如何进行听写的 ?
你的程序如何处理世界上一半以上人口使用的音译时间 ?
对于这些类型的输入,按键的概念是没有意义的,要求键盘作者模拟按键会限制新的更好的输入方法的发明。
如果你的答案是这些键盘的用户不能使用你的应用程序,那么android说你应该改变你的应用程序来支持这些用户。