WebView播放html5视频和全屏。

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-08 00:57:55
首先需要在Activity或Applictaion中开启硬件加速。在Activity或Appliction加入
android:hardwareAccelerated="true"
开启硬件加速。开启后就可以播放视频,不过如果要播放全屏还得加入以下代码。

wvBrowser.getSettings().setJavaScriptEnabled(true);// 启用js
wvBrowser.setWebChromeClient(chromeClient);
WebChromeClient.CustomViewCallback mCallBack = null;
View videoView;
WebChromeClient chromeClient = new WebChromeClient() {
	public void onShowCustomView(View view, CustomViewCallback callback) {
		// 全屏是调用的方法
		if (videoView != null) {
			callback.onCustomViewHidden();
			return;
		}
		if (listener != null) {
			listener.onFullVideo();
		}
		flVideo.setVisibility(VERTICAL);
		wvBrowser.setVisibility(GONE);
		flVideo.addView(view);
		videoView = view;
		mCallBack = callback;
	};
	public void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback) {
		onShowCustomView(view, callback);
	};
	public void onHideCustomView() {// 关闭全屏
		if (videoView == null) {
			return;
		}
		if (listener != null) {
			listener.onOutFullVideo();
		}
		mCallBack.onCustomViewHidden();
		flVideo.removeAllViews();
		flVideo.setVisibility(GONE);
		wvBrowser.setVisibility(VERTICAL);
		videoView = null;
	};
};
关闭全屏时调用
chromeClient.onHideCustomView();
全屏的操作就是调用onShowCustomView 将播放的视频View传给应用将这个view加入到某个容器中显示就可以了。
注意:某些手机全屏后按Back不会调用onBackPressed,而会调用onHideCustomView退出全屏,所以点击Back的时候注意判断是否退出全屏
如果不加这段代码如果正在播放视频退出Activity后声音会继续播放。
/**
 * 暂停播放视频
 * @author yubin
 * @date 2015-1-28
 */
public void onPause() {
	try {
		wvBrowser.getClass().getMethod("onPause").invoke(wvBrowser, (Object[]) null);
	} catch (IllegalAccessException e) {
		e.printStackTrace();
	} catch (IllegalArgumentException e) {
		e.printStackTrace();
	} catch (InvocationTargetException e) {
		e.printStackTrace();
	} catch (NoSuchMethodException e) {
		e.printStackTrace();
	}
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://my.oschina.net/u/2406628/blog/473374

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!