android4.0:在Fragment中播放优酷视频
来源:互联网 发布:java 断点 编辑:程序博客网 时间:2024/06/07 05:39
需求:在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;@Overridepublic 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_id和vid是要访问的视频相关参数
0 0
- android4.0:在Fragment中播放优酷视频
- 一句话在firefox5.0中播放视频
- 在Sharepoint中播放视频
- 在irrlicht中播放视频
- 在网页中播放视频
- 在Unity中播放视频
- 在Mideraplay中播放视频
- android4.0中Fragment定制item背景
- 优酷视频在网站里播放
- android4.0播放网络视频出现跳帧的现象
- Android4.0-Fragment介绍
- Discuz! X3在手机版中播放诸如优酷之类视频的方法
- 在网页中加入视频播放代码
- 在Flash中播放flv视频
- 在Word中播放Flash和视频
- 在网页中嵌入视频播放器
- 在Android中播放音频和视频
- 在Android中使用VideoView播放视频
- R dataframe basic operations
- LeetCode—Maximum Product Subarray
- 华为:工作感想(1)
- HTTPS连接最初的若干毫秒
- Cramfs、JFFS2、YAFFS2的全面对比
- android4.0:在Fragment中播放优酷视频
- 金士顿内存条型号的意义!
- 向量 和 矩阵 共轭
- LeetCode(47) PermutaionsII
- Singleton单例模式
- 基于redis subscribe/publish的消息实时推送
- oracle 11g 空表无法导出的问题
- 微信企业号上传媒体文件之本地文件上传
- eclipse 中文注释的乱码问题解决方案