【问题标题】:What's different between using WebView and Browser for YouTube Video api?使用 WebView 和 Browser for YouTube Video api 有什么不同?
【发布时间】: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?

标签: android webview youtube


【解决方案1】:

你有没有尝试过这个: http://code.google.com/p/html5webview/source/browse/trunk/HTML5WebView/src/org/itri/html5webview/HTML5WebView.java

基本上,如果没有一些复杂且未真正记录的配置,该标签在“默认”WebView 上不起作用。请告诉我们这是否能解决您的问题。

另请参阅此问题:http://code.google.com/p/android/issues/detail?id=22254

【讨论】:

  • 这很有趣,谢谢!我一定会去看看的。
  • 有趣...所以,当我为 3.0 重新编译它并添加硬件加速支持时,一切正常!但是,在没有硬件支持的 2.3.x 中(当时没有硬件支持),问题仍然存在。因此,这似乎不是 WebView 配置项,而是某种资源分配问题。我猜 WebView 在 Gingerbread 时代被冷落了。我想没有什么可做的。另外,我刚刚在没有 HA 的 3.2 中对其进行了测试,但它不起作用。所以,HA 是解决方案。
  • 酷 ;) 哦,还有一件事:似乎很快就会有一个官方的 Android 的 YouTube sdk:developers.google.com/events/io/sessions/gooio2012/120
【解决方案2】:

我对安卓了解不多。但是请浏览以下对您有用的链接。

WebView 不提供类似浏览器的小部件,不启用 JavaScript 并且网页错误被忽略。如果您的目标只是将一些 HTML 显示为 UI 的一部分,这可能没问题;除了阅读网页之外,用户不需要与网页进行交互,并且网页也不需要与用户进行交互。如果你真的想要一个成熟的网络浏览器,那么你可能想用 URL Intent 调用浏览器应用程序,而不是用 WebView 显示它,浏览器视图更适合小屏幕。

  1. http://iphoneincubator.com/blog/audio-video/how-to-play-youtube-videos-within-an-application
  2. How to play a video in a webview with android?
  3. UIWebView to Play Local and downloaded Video
  4. Android play youtube video in webview
  5. Video streaming using RTSP: Android

【讨论】:

  • 我会查看您的链接(并感谢您组装它们),但您最初的断言基本上是错误的。 WebView 是浏览器。有些东西默认是禁用的(比如 js 和插件),打开它们是通过调用一个标记它们的方法来完成的。我很确定我只是错过了一些东西,因为 YouTube flash 插件确实*工作,它只是跳过视频播放!
  • 所以...作为后续行动,我已经查看了您的链接,不幸的是,他们都没有谈到这个问题。人们要么尝试直接流式传输视频,要么在 YouTube 播放器中播放 YouTube,这一切都很好,但实际上并没有解决手头的话题。不幸的是,“对 Android 知之甚少”不会成为帮助您解决这个问题的专业领域。 :)
猜你喜欢
  • 2019-03-26
  • 1970-01-01
  • 1970-01-01
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
  • 2015-06-18
相关资源
最近更新 更多