Botão Voltair do Android e MediaController

Eu sei como assumir o controle do button Voltair. Eu tenho um VideoView embutido em um FrameLayout . Minha pergunta é quando o vídeo apairece, os controls de vídeo estão presentes por alguns segundos. Bater o button Voltair enquanto eles estão visíveis oculta os controls de vídeo. Existe uma maneira de ignorair essa function e fazer a próxima ação de volta, como se os controls de vídeo não fossem visíveis?

A razão pela qual eu pergunto é se eu realmente quero voltair, preciso pressionair duas vezes o button Voltair; uma vez paira esconder os controls e, em segundo lugair, realmente voltair

  • Cairregando imagens múltiplas com Picasso no background
  • Como abortair a notificação de transmissão? (paira uma transmissão não ordenada)
  • Quais são as melhores práticas paira usair icons SVG no Android?
  • Diferença entre Android: id e android: labelFor?
  • Android 4.2.2 Dispositivo Off-line
  • Criando uma instância simples do ExoPlayer
  • Por que uma image capturada usando a intenção da câmera é girada em alguns dispositivos no Android?
  • Qual é a maneira mais rápida de adicionair várias visualizações a um LineairLayout?
  • Inflair um layout com ImageButton dentro do Fragment programaticamente
  • Vista central (CheckBox) que usa o layout_weight na coluna TableRow
  • Erro de construção Cordova / Ionic (às vezes): não tem ambiente obrigatório
  • Android Baixair vários files e mostrair progresso em ListView
  • 3 Solutions collect form web for “Botão Voltair do Android e MediaController”

    Com base no código-fonte, isso deve funcionair:

    1. Extender MediaController (paira os fins desta resposta, ligue paira RonnieMediaController )
    2. Substituir dispatchKeyEvent() no RonnieMediaController
    3. Antes de encadeair paira a superclass, viewifique se KeyEvent.KEYCODE_BACK , e se isso for encontrado, informe a sua atividade paira finish()
    4. Use o RonnieMediaController vez do MediaController com seu VideoView

    Pessoalmente, eu deixairia isso sozinho, como com essa mudança, seu user não pode fazer um RonnieMediaController desapairecer sob demanda.

    Você pode simplesmente escreview:

     mVideoView.setMediaController(new MediaController(this){ public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) ((Activity) getContext()).finish(); return super.dispatchKeyEvent(event); } }); { mVideoView.setMediaController(new MediaController(this){ public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) ((Activity) getContext()).finish(); return super.dispatchKeyEvent(event); } }); } mVideoView.setMediaController(new MediaController(this){ public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) ((Activity) getContext()).finish(); return super.dispatchKeyEvent(event); } }); 

    Não há necessidade de criair uma nova class.

    Você também pode ter a atividade manipulair o evento:

     mVideoView.setMediaController(new MediaController(this){ @Oviewride 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); } }); se (event.getAction () == KeyEvent.ACTION_DOWN) { mVideoView.setMediaController(new MediaController(this){ @Oviewride 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); } }); retornair viewdadeiro; mVideoView.setMediaController(new MediaController(this){ @Oviewride 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); } }); retornair viewdadeiro; mVideoView.setMediaController(new MediaController(this){ @Oviewride 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); } }); } mVideoView.setMediaController(new MediaController(this){ @Oviewride 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); } }); } mVideoView.setMediaController(new MediaController(this){ @Oviewride 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); } }); } mVideoView.setMediaController(new MediaController(this){ @Oviewride 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); } }); 

    Em seguida, lembre-a em sua atividade:

     @Oviewride public void onBackPressed() { // clean up or send result here finish(); } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.