WebView and HTML5 amp;lt;videoamp;gt;(WebView和HTML5;视频;)
问题描述
我正在拼凑一个廉价的应用程序,除了其他东西外,它还可以"框住"我们的一些网站……使用WebViewClient非常简单。直到我点击了视频。
视频是作为HTML5元素制作的,这些元素在Chrome、iPhone上运行得很好,现在我们修复了编码问题,它在本机浏览器Android上运行得很好。
现在摩擦:WebView不喜欢它。完全没有。我可以点击海报图像,但没有任何反应。
搜索,我发现this很接近,但似乎基于一个‘链接’(如在href中...)而不是视频元素。(在视频元素上似乎没有调用onDownloadListener...)
我也看到了对覆盖onShowCustomView的引用,但在视频元素上似乎没有调用...也不应该覆盖UrlLoading..
我宁可不谈"从服务器提取XML,在应用程序中重新格式化它"。通过将故事布局保留在服务器上,我可以更好地控制内容,而不会强迫人们不断更新应用程序。因此,如果我能说服WebView像处理本机浏览器一样处理标记,那将是最好的。
我显然漏掉了一些明显的东西。但我不知道是什么。
推荐答案
我回答此主题只是为了防止有人阅读并对结果感兴趣。 在WebView中查看视频元素(视频HTML5标签)是可能的,但我必须说我不得不处理它几天。到目前为止,我必须遵循以下步骤:
-查找正确编码的视频
-在初始化WebView时,设置WebViewClient和WebChromeClient的JavaScript、插件。
url = new String("http://broken-links.com/tests/video/");
mWebView = (WebView) findViewById(R.id.webview);
mWebView.setWebChromeClient(chromeClient);
mWebView.setWebViewClient(wvClient);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginState(PluginState.ON);
mWebView.loadUrl(url);
-处理WebChromeClient对象中的onShowCustomView。
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
super.onShowCustomView(view, callback);
if (view instanceof FrameLayout){
FrameLayout frame = (FrameLayout) view;
if (frame.getFocusedChild() instanceof VideoView){
VideoView video = (VideoView) frame.getFocusedChild();
frame.removeView(video);
a.setContentView(video);
video.setOnCompletionListener(this);
video.setOnErrorListener(this);
video.start();
}
}
}
-处理视频的onCompletion和onError事件,以便返回Web视图。
public void onCompletion(MediaPlayer mp) {
Log.d(TAG, "Video completo");
a.setContentView(R.layout.main);
WebView wb = (WebView) a.findViewById(R.id.webview);
a.initWebView();
}
但现在我应该说还有一个重要的问题。我只能玩一次。第二次单击视频调度器(海报或某个播放按钮)时,它什么也不起作用。
我还希望在WebView框架内播放视频,而不是打开媒体播放器窗口,但这对我来说是次要问题。
我希望这对某些人有帮助,我也感谢任何意见或建议。
您好!
这篇关于WebView和HTML5;视频;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:WebView和HTML5;视频;
基础教程推荐
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01
- AdMob 广告未在模拟器中显示 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01
- iOS4 创建后台定时器 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01
- NSString intValue 不能用于检索电话号码 2022-01-01
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
