Android 媒体控制器上用于从 webView 播放的视频的后退按钮

Android back button on media controller for videos played from webView

我在 webView 中显示视频,我注意到 Kindle 设备的特定行为。首先,您必须滑出设备按钮(在 Kindle Fire HD 上),这会调出视频的视频控件。在控件启动时按后退按钮将首先隐藏视频控件。然后你必须再次按下后退按钮以关闭视图。即使在控件启动时,我也一直试图消除第一次按下后的视图。我 运行 遇到的冲突是,当控件启动时,我无法捕捉到第一次按下后退按钮。一旦控件消失,我按下后退按钮,它就会显示在我的@Override onBackPressed() 或下面我添加的 dispatchKeyEvent() 中,以尝试解决此问题。

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    int action = event.getAction();
    int keyCode = event.getKeyCode();
    switch (keyCode) {
    case KeyEvent.KEYCODE_BACK:
        if (action == KeyEvent.ACTION_DOWN) {
            // TODO
            finish();
        }
        return true;
    default:
        return super.dispatchKeyEvent(event);
    }
}

按两次后退按钮(控件消失后)将注册 keyEvent。但是您仍然必须按两次。是否有其他人 运行 卷入此冲突 and/or 您知道解决方法吗?我添加了 dispatchkeyEvent() 和 onBackPressed() 因为我希望 dispatchKeyEvent() 会捕捉到第一个后退按键,然后 onBackPressed() 会捕捉到第二个或 dispatchKeyEvent() 会捕捉到两个。当控件准备好进行第一次向后按压时,我什么也没得到。提前致谢!

ACTION_DOWN 将为您提供层次结构中的下一个可用子操作。但是,我认为您的意思是 ACTION_UP,它会将您带到父屏幕。您还应该尝试将 finish() 放在 if 语句之前。