android4.0:在Fragment中播放优酷视频

需求:在android4.0的Fragment(android.support.v4.app.Fragment)内,使用WebView播放Html内嵌的优酷网络视频.WebView是固定大小的窗口而非全屏,整个Html中只有一个视频,没有其他的网页内容.

 

涉及知识点:

1、 视频退出。

2、 点击Html视频的全屏切换按钮切换全屏。

 

问题:

1、 视频退出时声音还在继续。

使用WebView的中的onPause()和onResume()进行控制,在Fragment暂停和开始的时候控制视频的结束和开始。需要用到反射,因为WebView并未暴露这两个方法。

onResume():

		try {
			wb_video.getClass().getMethod("onResume")
					.invoke(wb_video, (Object[]) null);
		} catch (Exception e) {
			e.printStackTrace();
		}

onPause():

		try {
			wb_video.getClass().getMethod("onPause")
					.invoke(wb_video, (Object[]) null);
		} catch (Exception e) {
			e.printStackTrace();
		}

2、 点击Html视频的全屏切换按钮切换全屏实现。

视频全屏按钮是由Html自带的jsp控制的。点击全屏按钮如何在java代码中进行响应。

 

首先要给WebView设置支持js支持:

		WebSettings settings = wb_video.getSettings();
		settings.setJavaScriptEnabled(true);
		settings.setJavaScriptCanOpenWindowsAutomatically(true);

响应js支持还需要设置WebChromeClient。自定义一个WebChromeClient的子类,然后重写两个方法:

onShowCustomView()和onCustomViewHidden()

 

onShowCustomView()是点击全屏按钮时调用的,退出全屏使用该方法形参中的CustomViewCallback调用onCustomViewHidden。

	class MyWebChromeClient extends WebChromeClient {

		private CustomViewCallback mCustomViewCallback;

		@Override
		public void onShowCustomView(View view, CustomViewCallback callback) {
			if (mCustomView != null) {
				Log.i(TAG, "1");
				callback.onCustomViewHidden();
				return;
			}
			mFullscreenContainer.addView(view);
			mCustomView = view;
			mCustomViewCallback = callback;
			mDefaultContainor.setVisibility(View.INVISIBLE);
			mFullscreenContainer.setVisibility(View.VISIBLE);
			mFullscreenContainer.bringToFront();
			((HomeActivity) getActivity()).fullScreen(true);
			getActivity().setRequestedOrientation(
					ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

			super.onShowCustomView(view, callback);
		}

		public void onHideCustomView() {
			mDefaultContainor.setVisibility(View.VISIBLE);
			if (mCustomView == null) {
				return;
			}
			mCustomView.setVisibility(View.GONE);
			mFullscreenContainer.removeView(mCustomView);
			mCustomView = null;
			mFullscreenContainer.setVisibility(View.GONE);
			mCustomViewCallback.onCustomViewHidden();
			((HomeActivity) getActivity()).fullScreen(false);
			getActivity().setRequestedOrientation(
					ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
		}
	}
最后 , 清单文件对应的 Activity 节点下 , 设置切换 Activity 不销毁重建的属性:

 android:configChanges="orientation|keyboardHidden|screenSize"

注意:网上一般没有screenSize, 网但是在高版本的android系统里,不加不行。

<html>
	<body>
	<div id="youkuplayer" style="width:100%;height:100%"></div>
	<script type="text/javascript" src="http://player.youku.com/jsapi">player = new YKU.Player('youkuplayer',{styleid: '0',client_id: '989dad16ab4bebab',vid: 'XNzc5MTMyOTg0'});
		</script>
	</body>
</html>
client_idvid是要访问的视频相关参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值