安卓(三星S4)HTML5视频暂停

9
我正在使用Android Webview播放HTML5视频,包括Youtube视频(我的自有标签和Youtube嵌入式iFrames)。我在三星Galaxy S4上遇到了一个问题,具体情况如下:
1. 播放视频。 2. 视频播放时或播放后按“返回”键(视图关闭)。 3. 再次打开视图并按“播放”键。 4. 视频开始播放,然后立即暂停。从此刻起,我尝试播放的每个视频都会出现相同的情况。
我在两种Webview的测试环境中尝试了这种情况:“常规”Android Webview和HTML5 webview
我唯一看到的“可疑”事情是在按“返回”键时出现错误(Android错误):
sendUserActionEvent() mView == null

这是一个Galaxy S4的问题吗?还是一个Android的问题?有什么想法吗?

谢谢, Yaniv


1
我也遇到了这个问题,请参考http://stackoverflow.com/questions/20814894/opening-an-activity-with-a-webview-containing-a-html5-video-for-a-second-time和这个视频http://www.youtube.com/watch?v=0MpSpfJNyOk。仍然没有结果。你有找到解决方案的运气吗? - Wienke Giezeman
2个回答

15

似乎当你关闭 Webview 时,如果 AudioService 没有焦点,它不会暂停。这会导致一些问题(其他播放器无法开始播放等)。

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

@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

之前的回答在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();
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接