2017-12-15 18 views
1

반환 : 내가 볼의 KeyEvent getRepeatCount() 항상 내가 사용 프레스 원격 버튼이 코드를 사용할 때 이벤트를 잡기 위해 원격 안드로이드 TV 함께 일하고 있어요 0

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을 반환합니다. 중복을 누르면 더 커야합니다.

무엇이 잘못 되었나요?

답변

1

키를 눌렀다 놓았다가 다시 누르면 두 개의 ACTION_DOWN 이벤트가 수신되고 getRepeatCount()은 두 이벤트 모두에 대해 0을 반환합니다. 0이 아닌 getRepeatCount() 값을 보려면 키를 길게 눌러 반복을 시작해야합니다.

이렇게 생각하면됩니다. 키보드의 A 키를 10 번 눌렀다가 놓으면이 텍스트 필드에 "aaaaaaaaaa"를 입력하면 반복 횟수가 0 인 10 개의 이벤트가 표시됩니다. 그러나 A 키를 여러 번 길게 눌러 여러 개의 "a"를 얻으면 10 개의 이벤트가 발생하고 각 이벤트의 반복 횟수는 늘어납니다.

+0

안녕하세요 @ 벤 P, 나는 많은 시간, 긴 클릭, 두 번 클릭, 길게 누르십시오 ...하지만 getRepeatCount() 여전히 0을 누르십시오 – phongvan