我的网页视图里面有html视频。我想全屏显示此视频,因此我覆盖onShowCustomView
的{{1}}以使用WebChromeClient
。这在2.3中工作得很好,但是在4.x中VideoView
永远不会被调用。视频仍然会播放,但是,除了点击播放和停止之外,它还可以在网页视图中播放而不需要任何控制。
另外,我有hardwareAccelerated =“true”。
知道永远不会调用onShowCustomView
的原因吗?
onShowCustomView
答案 0 :(得分:9)
经过一段时间的努力,我终于找到了原因。在Android 4.x中,您必须使用html'控件'来显示控件。视频中的属性'标签。显示这些控件后,您可以单击全屏按钮,然后调用' onShowCustomView'。由于嵌入式视频在4.x中可用,并且您可以选择使用控件进入全屏,因此不会在播放时自动调用onShowCustomView。不幸的是,Android文档中记录的内容很少。
答案 1 :(得分:0)
这适合我。
我在使用vimeo视频制作网络应用时发现了一个'怪癖解决方案'。 我测试了两个设备。一个是Android 4.2.x版本,另一个是4.4.x版本。一个人能够以全屏模式播放视频,另一个则无法播放。
在阅读官方文档“Migrating to WebView in Android 4.4”后,我发现两个设备中有不同的“UserAgent”名称。
一个人有这个userAgent。
Mozilla/5.0 (Linux; Android 4.4.2; SHV-E300L Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36
另一个有这个。
Mozilla/5.0 (Linux; Android 4.4.4; SHV-E370K Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36
我认为Chrome版本是制作全屏视频的解决方案。所以我将chrome版本更改为30.x。
WebSettings s = mWebView.getSettings();
//Change UserAgent to play fullscreen vimeo's videos.
String agent = s.getUserAgentString();
String p = "(Chrome/[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)";
Pattern pattern = Pattern.compile(p);
Matcher matcher = pattern.matcher(agent);
if(matcher.find()) {
agent = matcher.replaceFirst("Chrome/30.0.0.0");
}
s.setUserAgentString(agent);
哦~~我可以睡觉......(抱歉我的英语很差)