【发布时间】:2012-04-23 16:08:17
【问题描述】:
我已经实现了 youtube api,它可以在常规计算机浏览器中按预期工作。 当我在 Ice Cream Sandwich 和 Gingerbread 中测试它时,在现有的浏览器(即 Webkit)上,它也能像在我的电脑上一样工作。
但是,当我将它加载到 WebView 中时,它会遇到一些非常奇怪的行为。具体来说,它会加载所有播放器控件(播放按钮、进度条等)并触发所有正常事件以进行缓冲和播放,但它不会播放,而是跳到最后并显示标准的 YouTube 播放后图标其他视频。如果我单击其中一个图标,它会跳过该视频并直接跳到该视频的结尾。
我已将 setJavascriptEnabled 和 setPluginsEnabled 都设置为 true。我想我遗漏了一些东西,因为它在股票浏览器中一切正常,但我对它是什么感到困惑。有没有人在 WebView 中实现了 YouTube 视频播放器(或 JWPlayer,或任何我可以播放 youtube 视频的东西)?如果是这样,请分享你是如何让它发挥作用的。
TIA
[编辑] 自发布此消息以来,我已经实现了一个直接从 YouTube 检索视频流的本地播放器。这是令人难以置信的笨拙,因为设备之间与它们可以/不能播放的文件相关的碎片非常大,而且由于无法通过 YouTube 设备模型并让它返回相关的流,所以发生的事情是你得到了所有流,然后必须从数组中选择。无论如何......关键是这只是一种可怕的方法,我真的很想找出好的 ole' 嵌入式播放器解决方案,因为它*必须工作,因为它可以在股票浏览器中工作。这可能是标题问题吗?
【问题讨论】:
-
只是一个长镜头,你有没有使用 System.setProperty("http.keepAlive", "false");在您的 URL 连接上标记?可能它正在缓存一些较旧的连接,并在您尝试重用它时直接跳到它停止的地方。
-
有趣的想法...我会试一试,虽然我怀疑是这样,因为我正在尝试使用随机的 YouTube 视频,所以,没有理由让它有任何东西已缓存。
-
在黑暗中拍摄。当您在 webView 中加载此页面时,该页面的来源是什么?它是在本地设备上还是在某处的服务器上?只是想知道您是否会被同源政策阻止。
-
另外,还有其他问题:您是否在 WebViewClient 实现中记录了对 shouldOverrideUrlLoading 和 onReceivedError 的调用?还是您使用的是 WebChromeClient 而不是 WebViewClient?