KeyEvent getRepeatCount() 总是 return 0
KeyEvent getRepeatCount() always return 0
我正在使用遥控器 android 电视
要在使用按下远程按钮时捕获事件,我使用此代码:
public boolean dispatchKeyEvent(KeyEvent event) {
Log.d("LOG", "Number repeate count = " + event.getRepeatCount());
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_1:
exoPlayerManager.showControllerView();
if (event.getRepeatCount() > 0) {
if (videoPlayerView.getPlaybackControlView().getPlayer().getPlaybackParameters().speed >= 64) {
((TextView)videoPlayerView.getPlaybackControlView().findViewById(R.id.exo_rate)).setVisibility(View.GONE);
videoPlayerView.getPlaybackControlView().getPlayer().setPlaybackParameters(new PlaybackParameters(1, 1.0f));
} else {
videoPlayerView.getPlaybackControlView().getPlayer().setPlaybackParameters(new PlaybackParameters(2 * videoPlayerView.getPlaybackControlView().getPlayer().getPlaybackParameters().speed, 1.0f));
}
((TextView)videoPlayerView.getPlaybackControlView().findViewById(R.id.exo_rate)).setText(videoPlayerView.getPlaybackControlView().getPlayer().getPlaybackParameters().speed + "X");
}else if (videoPlayerView.getPlaybackControlView() != null) {
return videoPlayerView.getPlaybackControlView().dispatchKeyEvent(event);
}
break;
我看到当我按下遥控器上的 1 个按钮时,getRepeateCount()
总是 return 0。
我想如果我按重复,它应该大于 0。
这里有什么问题吗?
当你按下一个键,释放它,然后再次按下它时,你将收到两个 ACTION_DOWN
事件,并且 getRepeatCount()
将为两个事件 return 0。要查看非零 getRepeatCount()
值,您必须 按住 键足够长的时间使其开始重复。
你可以这样想。如果我通过按下并释放键盘的 A 键 10 次在此文本字段中键入 "aaaaaaaaaa",我将获得 10 个事件,每个事件的重复计数为零。但是,如果我按住 A 键的时间足够长,以至于我开始收到多个 "a",那么我将收到 10 个事件,每个事件的重复次数都在增加。
我正在使用遥控器 android 电视 要在使用按下远程按钮时捕获事件,我使用此代码:
public boolean dispatchKeyEvent(KeyEvent event) {
Log.d("LOG", "Number repeate count = " + event.getRepeatCount());
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_1:
exoPlayerManager.showControllerView();
if (event.getRepeatCount() > 0) {
if (videoPlayerView.getPlaybackControlView().getPlayer().getPlaybackParameters().speed >= 64) {
((TextView)videoPlayerView.getPlaybackControlView().findViewById(R.id.exo_rate)).setVisibility(View.GONE);
videoPlayerView.getPlaybackControlView().getPlayer().setPlaybackParameters(new PlaybackParameters(1, 1.0f));
} else {
videoPlayerView.getPlaybackControlView().getPlayer().setPlaybackParameters(new PlaybackParameters(2 * videoPlayerView.getPlaybackControlView().getPlayer().getPlaybackParameters().speed, 1.0f));
}
((TextView)videoPlayerView.getPlaybackControlView().findViewById(R.id.exo_rate)).setText(videoPlayerView.getPlaybackControlView().getPlayer().getPlaybackParameters().speed + "X");
}else if (videoPlayerView.getPlaybackControlView() != null) {
return videoPlayerView.getPlaybackControlView().dispatchKeyEvent(event);
}
break;
我看到当我按下遥控器上的 1 个按钮时,getRepeateCount()
总是 return 0。
我想如果我按重复,它应该大于 0。
这里有什么问题吗?
当你按下一个键,释放它,然后再次按下它时,你将收到两个 ACTION_DOWN
事件,并且 getRepeatCount()
将为两个事件 return 0。要查看非零 getRepeatCount()
值,您必须 按住 键足够长的时间使其开始重复。
你可以这样想。如果我通过按下并释放键盘的 A 键 10 次在此文本字段中键入 "aaaaaaaaaa",我将获得 10 个事件,每个事件的重复计数为零。但是,如果我按住 A 键的时间足够长,以至于我开始收到多个 "a",那么我将收到 10 个事件,每个事件的重复次数都在增加。