Кнопка возврата Android не работает при воспроизведении видео в VideoView. Но это работает до воспроизведения видео. Я использую собственный MediaController для VideoView.
Я пытался использовать dispatchKeyEvent, но это не работает.
Код действия, использующего VideoView:
mc = new CustomMediaController(mVideo.getContext(), screenIcon) {
@Override
public void hide(){
}
@Override
public boolean dispatchKeyEvent(KeyEvent event){
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
super.hide();
((Activity) getContext()).finish();
return true;
}
return super.dispatchKeyEvent(event);
}
};
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
onBackPressed();
finish();
}
return true;
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
CustomMediaController также содержит dispatchKeyEvent:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
((Activity) getContext()).finish();
}
return super.dispatchKeyEvent(event);
}
Также, когда я прокручиваю макет, mediaController не поддерживает свою позицию в videoView. Чтобы устранить эту ошибку, я добавил код для исправления положения mediaController.
FrameLayout f;
RelativeLayout.LayoutParams lp;
RelativeLayout.LayoutParams params;
params = (RelativeLayout.LayoutParams) mVideo.getLayoutParams();
params.height = mp.getVideoHeight();
progress.dismiss();
f = (FrameLayout) mc.getParent();
lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_BOTTOM, mVideo.getId());
try {
((LinearLayout) f.getParent()).removeView(f);
} catch (Exception e) {
((RelativeLayout) f.getParent()).removeView(f);
}
((RelativeLayout) mVideo.getParent()).addView(f, lp);
//mc.setAnchorView(mVideo);
mVideo.setLayoutParams(params);
Кнопка «Назад» отлично работает, когда я удаляю этот код выше.
Я рассмотрел следующие вопросы в самом переполнении стека, но не решил свою проблему.
Ссылки на переполнение стека, которые я пробовал:
Кнопка возврата Android и MediaController
Кнопка "Назад" не будет работать, когда VideoView воспроизводит видео
Первое нажатие кнопки "Назад" не перехватывается при воспроизведении видео на Android
Проблема с кнопкой "Назад" в VideoView