KeyEvent getRepeatCount() 总是返回 0

5

我正在使用远程Android TV。为了捕捉用户按下遥控器按钮的事件,我使用了以下代码:

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()总是返回0。我认为如果我按下重复键应该会大于0。

这里出了什么问题吗?

1个回答

8
当您按下一个键,然后释放它,再次按下它时,您将收到两个事件,并且将为两者都返回0。要查看非零值,必须长按该键直到它开始重复才行。
您可以这样考虑。如果我通过按下并释放键盘的A键10次来在此文本字段中输入“aaaaaaaaaa”,我将获得10个事件,每个事件的重复计数为零。但是,如果我按住A键足够长的时间,以至于我开始获得多个“a”,那么我将获得10个事件,每个事件都具有递增的重复计数。

1
嗨,@Ben P,我按了很多次数字1,长按,双击,长按等等,但getRepeatCount()仍然是0。 - mdtuyen
@phongvan 这种行为并不适用于所有键,尝试按下返回按钮查看它。 - ssynhtn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接