Android: Cómo llamar a MediaController para avanzar y retroceder rápidamente usando KeyEvents
Hola, estoy usando mediacontroller para controlar mi mediaplayer, quiero controlar usando keyEvents en lugar de touchesvents, estoy usando el código de abajo para hacer eso, pero sólo Play / Pause está funcionando, donde como KEYCODE_MEDIA_FAST_FORWARD y KEYCODE_MEDIA_REWIND no se manejan cuando mediacontroller vista viene .
¿Puede alguien sugerir cómo cuidar el avance y retroceso rápidos usando eventos clave.
- Fake KeyEvent no funciona * exactamente * como el botón "real". ¿Por qué?
- Anulación del botón de retroceso
- Soft teclado sin EditText y la detección de pulsaciones de teclas
- Android: Cómo controlar el botón de inicio
- Cómo utilizar diferentes onKeyDown en fragmento de una misma actividad
Por favor ayuda.
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; }
- OnKeyListener no funciona en el teclado virtual
- Actividad de fragmento catch onKeyDown y uso en fragmento
- Problema onKeyDown ()
- Android onkey - dispatchKeyEvent sin disparar
- Llamar a funciones javascript en una vista web desde la clase de actividad
- AutoCompleteTextView detecta cuando se selecciona la entrada de la lista editada por el usuario
- El cuadro de diálogo se muestra dos veces cuando se pulsa de nuevo
Creé dos doForwardVideo () y doRewindVideo () de la función y lo utilizé dentro onClick el oyente y encendido onKeyDownEvent ()
espero que esto ayude !!
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); }