我正在尝试捕获并打印用户按下的键(如果用户按住该键,我只想打印一次)。为此,我检查了Android文档(https://developer.android.com/reference/android/view/KeyEvent),发现方法getRepeatCount应该在第一次按下该键时返回0,然后返回一个非零值。问题在于它总是返回0。
我创建了一个新的Android项目(在Intellij IDEA上),并且活动为空,然后实现了onKeyDown方法,如下所示:
package com.soft.uret.testonkeydown;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.i("key pressed", event.getKeyCode() + " - " + event.getRepeatCount());
return super.onKeyDown(keyCode, event);
}
}
当我按住物理键盘上的一个键时,我会得到:
I/key pressed: 31 - 0
I/key pressed: 31 - 0
I/key pressed: 31 - 0
I/key pressed: 31 - 0
I/key pressed: 31 - 0
I/key pressed: 31 - 0
I/key pressed: 31 - 0
I/key pressed: 31 - 0
I/key pressed: 31 - 0
I/key pressed: 31 - 0
I/key pressed: 31 - 0
I/key pressed: 31 - 0
I/key pressed: 31 - 0
I/key pressed: 31 - 0
您可以看到getRepeatCount()始终返回0,为什么呢?我想念什么?