Android WebView 播放 HTML5/h.264/mp4 视频,如何进入 MediaPlayer [英] Android WebView Playing HTML5/h.264/mp4 Video, How to get at the MediaPlayer
本文介绍了Android WebView 播放 HTML5/h.264/mp4 视频,如何进入 MediaPlayer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个 Activity
,它是一个 WebView
.我在里面有一个 WebChromeClient
.在其中,有几个回调旨在返回处理视频位的 MediaPlayer
.例如:
@Override公共无效 onPrepared(MediaPlayer mp) {Log.i(TAG, " -------------> onPrepared");}
当我使用 HTML <video>
标签(通过注入)将 MP4 流加载到 WebView
时,这些无法触发.
当我 finish()
活动时,logcat 报告:
09-13 23:55:24.590: E/MediaPlayer(7949): mOnBufferingUpdateListener 为空.无法发送 MEDIA_BUFFERING_UPDATE 消息.09-13 23:55:24.680: E/MediaPlayer(7949): mOnBufferingUpdateListener 为空.无法发送 MEDIA_BUFFERING_UPDATE 消息.09-13 23:55:24.680: E/MediaPlayer(7949): mOnVideoSizeChangedListener 为空.无法发送 MEDIA_SET_VIDEO_SIZE 消息.09-13 23:55:25.675: E/MediaPlayer(7949): mOnBufferingUpdateListener 为空.无法发送 MEDIA_BUFFERING_UPDATE 消息.09-13 23:55:26.735: E/MediaPlayer(7949): mOnBufferingUpdateListener 为空.无法发送 MEDIA_BUFFERING_UPDATE 消息.09-13 23:55:27.755: E/MediaPlayer(7949): mOnBufferingUpdateListener 为空.无法发送 MEDIA_BUFFERING_UPDATE 消息.09-13 23:55:28.705: E/MediaPlayer(7949): mOnBufferingUpdateListener 为空.无法发送 MEDIA_BUFFERING_UPDATE 消息.
尽我所能,我无法让它停止,即使 WebView
被清除,然后被销毁.使用 标签加载视频时,我不知道有什么方法可以强制
WebChromeClient
使用特定的 MediaPlayer
为它创造.似乎决定使用一些隐藏的,报告上述内容.有没有办法定位通过 标签创建的
MediaPlayer
标签在 WebView
上?
--更新
这是初始化WebView的代码:
mWebView = new WebView(mContext);mWebView.getSettings().setJavaScriptEnabled(true);mWebView.getSettings().setPluginState(PluginState.OFF);mWebView.setVisibility(View.INVISIBLE);mWebView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);mWebView.getSettings().setBuiltInZoomControls(false);mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);mWebView.getSettings().setLoadWithOverviewMode(true);mWebView.getSettings().setUseWideViewPort(true);mWebView.clearHistory();mWebView.clearFormData();mWebView.clearCache(true);mWebView.getSettings().setAllowFileAccess(true);mWebView.getSettings().setUserAgentString("Android Mozilla/5.0 AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30");铬 = 新的 MyWebChromeClient();mWebView.setWebChromeClient(chrome);wvc = new MyWebViewClient();mWebView.setWebViewClient(wvc);mDomain = "http://foo.bar.com";mWebView.requestFocus(View.FOCUS_DOWN);字符串肉 = genMainHTML(R.raw.frame);mWebView.loadDataWithBaseURL(mDomain, meat, "text/html", "utf-8", null);
frame"代码是用于启动一些视频的 iframe(至少 Vimeo 和 YouTube 似乎都采用这种方法).我对它进行了一些修剪以避免繁琐:
<头>头部><身体><div><iframe src="-target.url.with.params-" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>