Android(三星S4)HTML5视频暂停

时间:2013-12-04 15:35:02

标签: javascript android html5 android-webview html5-video

我正在使用Android Webview播放html5视频,包括Youtube视频(我自己的标签和Youtube嵌入式iFrame)。 在以下情况下,我遇到了Samsung Galaxy S4的问题:

  1. 播放视频。
  2. 在视频播放时(视图关闭)/后按'后退'
  3. 再次打开视图并按“播放”。
  4. 视频开始播放并立即暂停。从这一刻起,我将尝试播放的每个视频都会出现同样的情况。
  5. 我在测试环境中尝试了两种Webview:“常规”Android Webview和HTML5 webview

    我看到的唯一“可疑”的事情是在按下“后退”时出错(Android错误):

    sendUserActionEvent() mView == null
    

    这是Galaxy S4问题吗? Android问题?有什么想法吗?

    TNX, 参见Yaniv

2 个答案:

答案 0 :(得分:15)

如果AudioService在关闭Webview时没有焦点,则看起来没有暂停。这导致了几个问题(另一个玩家无法开始玩等)。

唯一对我有用的解决方案是:

@Override
protected void onPause() {
    super.onPause();
    ((AudioManager)getSystemService(
            Context.AUDIO_SERVICE)).requestAudioFocus(
                    new OnAudioFocusChangeListener() {
                        @Override
                        public void onAudioFocusChange(int focusChange) {}
                    }, AudioManager.STREAM_MUSIC, 
                    AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
}

这会导致当前玩家在停下来时被暂停/杀死(不确定是哪个)并解决所有遇到的问题。

答案 1 :(得分:1)

以前的答案在Android Kitkat上没有对我有用,以下答案适用于所有平台。

try {
        Class.forName("android.webkit.WebView")
                .getMethod("onPause", (Class[]) null)
                .invoke(webView, (Object[]) null);
    } catch (ClassNotFoundException cnfe) {
        cnfe.printStackTrace();
    } catch (NoSuchMethodException nsme) {
        nsme.printStackTrace();
    } catch (InvocationTargetException ite) {
        ite.printStackTrace();
    } catch (IllegalAccessException iae) {
        iae.printStackTrace();
    } catch (NullPointerException nullPointerException) {
        nullPointerException.printStackTrace();
    }