2014-02-14 11 views
4

안녕하세요, 내 mediaplayer를 제어하기 위해 mediacontroller를 사용하고 있습니다. touchevents 대신 keyEvents를 사용하여 제어하고 싶습니다. 아래 코드를 사용하여 재생/일시 중지 만하고 있습니다. KEYCODE_MEDIA_FAST_FORWARDKEYCODE_MEDIA_REWIND은 mediacontroller보기가 나오는 경우 처리되지 않습니다.안드로이드 : MediaController를 빨리 감기하고 되감기 위해 KeyEvents를 사용하여 호출하는 법

키 이벤트를 사용하여 빨리 감기와 되감기를 처리하는 방법을 제안하십시오.

도와주세요.

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    mediaController.show(); 
    switch (keyCode) { 
    case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: 
     if (mediaPlayer.isPlaying()) { 
      pause(); 
     } else 
      start(); 

     return true; 
    case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: { 
     if (mediaPlayer.isPlaying()) { 
     currentPosition = mediaPlayer.getCurrentPosition(); 
     seekTo(currentPosition + 2000); 
     } 
    } 
     return true; 

    case KeyEvent.KEYCODE_MEDIA_REWIND: { 
     if (mediaPlayer.isPlaying()) { 
     currentPosition = mediaPlayer.getCurrentPosition(); 
     seekTo(currentPosition - 3000); 
     } 
    } 
     return true; 

    } 
    return false; 
} 

답변

0

나는 두 가지 기능 doForwardVideo()와 doRewindVideo를 생성()와 희망이 도움이

온 클릭 리스너 내부 및 onKeyDownEvent()에 그것을 사용!

public void doForwardVideo() 
    { 
     if (mPlayer == null) { 
      return; 
     } 
     int pos = mPlayer.getCurrentPosition(); 
     pos += 15000; // milliseconds 
     mPlayer.seekTo(pos); 
     setProgress(); 

     show(sDefaultTimeout); 
    } 

    public void doRewindVideo() 
    { 
     if (mPlayer == null) { 
      return; 
     } 

     int pos = mPlayer.getCurrentPosition(); 
     pos -= 5000; // milliseconds 
     mPlayer.seekTo(pos); 
     setProgress(); 

     show(sDefaultTimeout); 
    } 


    //*** Create two listeners which then you will set it in 
    //private void initControllerView(View v) method 

    private View.OnClickListener mRewListener = new View.OnClickListener() { 
     public void onClick(View v) { 
      doRewindVideo(); 
     } 
    }; 

    private View.OnClickListener mFfwdListener = new View.OnClickListener() { 
     public void onClick(View v) { 
      doForwardVideo(); 
     } 
    }; 

//****** Here is snippet for private void initControllerView(View v) method 

mFfwdButton = (ImageButton) v.findViewById(R.id.ffwd); 
    if (mFfwdButton != null) { 
     mFfwdButton.setOnClickListener(mFfwdListener); 
     if (!mFromXml) { 
      mFfwdButton.setVisibility(mUseFastForward ? View.VISIBLE : View.GONE); 
     } 
    } 

    mRewButton = (ImageButton) v.findViewById(R.id.rew); 
    if (mRewButton != null) { 
     mRewButton.setOnClickListener(mRewListener); 
     if (!mFromXml) { 
      mRewButton.setVisibility(mUseFastForward ? View.VISIBLE : View.GONE); 
     } 
    } 

//***** onKeyDown() Event **** 
@Override 
    public boolean dispatchKeyEvent(KeyEvent event) { 
     if (mPlayer == null) { 
      return true; 
     } 

     int keyCode = event.getKeyCode(); 
     final boolean uniqueDown = event.getRepeatCount() == 0 
       && event.getAction() == KeyEvent.ACTION_DOWN; 
     if (keyCode == KeyEvent.KEYCODE_HEADSETHOOK 
       || keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE 
       || keyCode == KeyEvent.KEYCODE_SPACE) { 
      if (uniqueDown) { 
       doPauseResume(); 
       show(sDefaultTimeout); 
       if (mPauseButton != null) { 
        mPauseButton.requestFocus(); 
       } 
      } 
      return true; 
     } else if (keyCode == KeyEvent.KEYCODE_MEDIA_PLAY) { 
      if (uniqueDown && !mPlayer.isPlaying()) { 
       mPlayer.start(); 
       updatePausePlay(); 
       show(sDefaultTimeout); 
      } 
      return true; 
     } else if (keyCode == KeyEvent.KEYCODE_MEDIA_STOP 
       || keyCode == KeyEvent.KEYCODE_MEDIA_PAUSE) { 
      if (uniqueDown && mPlayer.isPlaying()) { 
       mPlayer.pause(); 
       updatePausePlay(); 
       show(sDefaultTimeout); 
      } 
      return true; 
     } else if (keyCode == KeyEvent.KEYCODE_MEDIA_FAST_FORWARD) { 
      if (uniqueDown) { 
       doForwardVideo(); 
      } 
      // don't show the controls for volume adjustment 
      return true; 
     } else if (keyCode == KeyEvent.KEYCODE_MEDIA_REWIND) { 
      if (uniqueDown) { 
       doRewindVideo(); 
      } 
      // don't show the controls for volume adjustment 
      return true; 
     }else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN 
       || keyCode == KeyEvent.KEYCODE_VOLUME_UP 
       || keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) { 
      // don't show the controls for volume adjustment 
      return super.dispatchKeyEvent(event); 
     } else if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_MENU) { 
      if (uniqueDown) { 
       hide(); 
      } 
      return true; 
     } 

     show(sDefaultTimeout); 
     return super.dispatchKeyEvent(event); 
    }