在 android webview 中,我设置了 web chrome 客户端并启用了硬件加速。在我的网页中,我有一个 html5 视频(内联)。当正在播放视频并按下主页按钮时,视频不会暂停,从而给用户带来糟糕的用户体验。如何在不破坏 webview 实例的情况下暂停所有正在播放的视频?
PS 请不要发布 JS 解决方案,因为我无法访问 JS 层(以及也有视频的 iframe)
在 android webview 中,我设置了 web chrome 客户端并启用了硬件加速。在我的网页中,我有一个 html5 视频(内联)。当正在播放视频并按下主页按钮时,视频不会暂停,从而给用户带来糟糕的用户体验。如何在不破坏 webview 实例的情况下暂停所有正在播放的视频?
PS 请不要发布 JS 解决方案,因为我无法访问 JS 层(以及也有视频的 iframe)
使用此代码
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
super.onShowCustomView(view, callback);
if (view instanceof FrameLayout){
FrameLayout frame = (FrameLayout) view;
if (frame.getFocusedChild() instanceof VideoView){
VideoView video = (VideoView) frame.getFocusedChild();
frame.removeView(video);
a.setContentView(video);
video.setOnCompletionListener(this);
video.setOnErrorListener(this);
video.start();
}`enter code here`
}
}
默认情况下,WebView 不提供类似浏览器的小部件,不启用 JavaScript 并且忽略网页错误。如果您的目标只是将一些 HTML 显示为 UI 的一部分,这可能没问题;除了阅读网页之外,用户不需要与网页进行交互,并且网页也不需要与用户进行交互。如果您确实想要一个成熟的 Web 浏览器,那么您可能希望使用 URL Intent 调用 Browser 应用程序,而不是使用 WebView 显示它
http://developer.android.com/reference/android/webkit/WebView.html
您可以尝试拦截视频流并使用媒体播放器类显示它。之后,您将可以访问流媒体。
我有这个问题,现在我有一个简单而明确的答案。这假设您的 webview 对象是活动或活动片段中的字段(成员、属性等)。
我在 stackoverflow 的其他地方得到的 onPause() 位。需要 onResume 来重新建立 webview 对视频对象的引用。如果你不这样做,如果你在前台应用程序时再次播放视频,你最终会遇到同样的问题。