我有一个应用程序,通过WebView显示一个带有视频元素的HTML5页面。我花了一些时间才弄清楚如何让视频正常播放,但最终我成功地在三星Galaxy Tab(Android 3.1)上嵌入了WebView中的视频。我使用以下代码来定义视频标签:
<video controls poster="img/poster.jpg" height="240" width="360">
<source src="video/BigBuck.m4v">
<source src="video/BigBuck.theora.ogv" type="video/ogg">
<source src="video/BigBuck.webm" type="video/webm">
HTML5 video not supported.
</video>
视频元素有多个来源,现在我正试图在视频开始播放之前捕获所选的视频源(和格式)。当我点击播放按钮时,我看到一个HTTP请求到达存储视频文件的Web服务器,但我没有成功地在应用端拦截这个请求。
我查看了几种方法,看看视频文件的请求是否经过了它们,但我没有在任何一个方法中看到它通过。
- 在我的
WebViewClient
的shouldOverrideUrlLoading(WebView view, String url)
中,只有初始的HTML5页面请求通过。 - 在我的
WebViewClient
的shouldInterceptRequest (WebView view, String url)
中,我只看到传递初始的HTML5页面请求和视频海报图像的请求,但没有视频文件的请求。 - 在我的
WebChromeClient
中的onShowCustomView(View view, CustomViewCallback callback)
仅在我单击HTML5页面上的全屏控件按钮并且视频已经播放时才调用,而不是在我单击播放按钮时。(这个方法的实际目的是什么?)
shouldOverrideUrlLoading(WebView view, String url)
对我有用(尽管是在 Gingerbread 上)。 - Boris Strandjev