KeyEvent getRepeatCount()始终返回0

时间:2017-12-15 02:49:52

标签: android keyevent android-tv

我正在使用远程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()总是返回0。 我想如果我按下重复它应该更大0。

这里有什么问题?

1 个答案:

答案 0 :(得分:1)

当您按某个键,将其释放,然后再次按下它时,您将收到两个ACTION_DOWN个事件,getRepeatCount()将返回0。要查看非零getRepeatCount()值,您必须按住键足够长的时间才会开始重复。

你可以这样想。如果我输入" aaaaaaaaaa"通过按下并释放键盘的A键10次进入此文本字段,我将获得10个事件,每个事件的重复次数为零。但如果我把A键按下足够长的时间以便我开始得到多个" a" s,那么我将获得10个事件,每个事件的重复次数都在增加。