Botón de retroceso de Android y MediaController
Sé cómo tomar el control del botón atrás. Tengo un VideoView
incrustado en un FrameLayout
. Mi pregunta es cuando aparece el video, los controles de video están presentes durante unos segundos. Pulsar el botón atrás mientras están visibles oculta los controles de vídeo. ¿Hay alguna manera de ignorar esa función y hacer la siguiente acción de regreso como si los controles de video no fueran visibles?
La razón por la que pregunto es si realmente quiero volver, debo presionar el botón atrás dos veces; una vez para ocultar los controles y la segunda para realmente volver
3 answers
Basado en el código fuente, esto debería funcionar:
- Extender
MediaController
(a los efectos de esta respuesta, llámeloRonnieMediaController
) - Anular
dispatchKeyEvent()
enRonnieMediaController
- Antes de encadenarse a la superclase, verifique
KeyEvent.KEYCODE_BACK
, y si se encuentra, dígale a su actividad quefinish()
- Use
RonnieMediaController
en lugar deMediaController
con suVideoView
Personalmente, simplemente lo dejaría en paz, ya que con este cambio su usuario no puede hacer que un RonnieMediaController
desaparezca bajo demanda.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-18 23:29:21
Simplemente puede escribir:
mVideoView.setMediaController(new MediaController(this){
public boolean dispatchKeyEvent(KeyEvent event)
{
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK)
((Activity) getContext()).finish();
return super.dispatchKeyEvent(event);
}
});
No es necesario crear una nueva clase.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-10 13:11:05
También puede hacer que la Actividad maneje el evento:
mVideoView.setMediaController(new MediaController(this){
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK ) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
return true;
} else if (event.getAction() == KeyEvent.ACTION_UP) {
((Activity) getContext()).onBackPressed();
return true;
}
}
return super.dispatchKeyEvent(event);
}
});
Luego manejarlo en su Actividad:
@Override
public void onBackPressed() {
// clean up or send result here
finish();
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-27 18:08:41