14

在我的 android 应用程序中,我有一个 WebView 来显示来自我们网站的 html 数据。有时该页面会有 youtube 嵌入对象。这在应用程序中没有正确显示。有没有办法在 WebView 中显示/播放 youtube 视频?谢谢。

4

7 回答 7

8

除了可能在具有 Flash 的设备上之外,您不能将它们显示为嵌入的。

但是,如果您可以解析 YouTube 视频详细信息,则可以构建一个ACTION_VIEW Intent将在 YouTube 应用程序上显示它们的内容……对于那些具有 YouTube 应用程序的 Android 设备。

您还可以尝试使用 HTML5 的<video>标签,AFAIK 在浏览器应用程序中受支持,因此可以在WebView.

于 2010-02-18T21:49:52.263 回答
7

我偶然发现了这个帖子:链接

事实上,我基本上只需要添加到应用程序清单 xml 中:

android:hardwareAccelerated="true"

瞧,连 youtube 视频都开始播放了

于 2011-10-17T07:58:43.967 回答
6
webView.setWebViewClient(new WebViewClient()
{
 public boolean shouldOverrideUrlLoading(WebView view, String url)
 {
  // YouTube video link
  if (url.startsWith("vnd.youtube:"))
  {
   int n = url.indexOf("?");
   if (n > 0)
   {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("http://www.youtube.com/v/%s", url.substring("vnd.youtube:".length(),n)));
   }
   return (true);
  }

  return (false);
 }
});

您的 WebView (webView) 将向您发送 shouldOverrideUrlLoading 消息,其 URL 如下所示:

vnd.youtube:{VIDEO_ID}?{PARMS}

解析它以将其转换为http://www.youtube.com/v/ {VIDEO_ID},然后将此修改后的 URL 作为 Intent 传递。

为我工作...

于 2011-01-27T12:13:45.370 回答
4

在此处阅读我在 android-developers 组上的帖子:模拟器中的 YouTube?

基本上,播放 YouTube 剪辑的最佳方式是为其创建自己的 Activity,这是一个很好的示例:波兰您的应用程序:免费的可嵌入 Android YouTube Activity!

更新:由于 YouTube 令牌更改导致的不兼容问题已得到修复。该组件的最新版本应该适用于公共 YouTube 视频。

于 2010-02-18T22:04:16.943 回答
2

您可以尝试切换您的网站以嵌入YouTube 播放器的 HTML5 版本,而不是 Flash 版本。仍然不确定这是否会 100% 工作,但它显然会比当前不支持闪存的设备上的闪存版本更好。

编辑:没关系,看起来 HTML5 版本还要求浏览器支持 H.264 编解码器,它看起来不像任何 Android 设备目前支持。

于 2010-02-18T21:54:29.133 回答
0

嵌入式 youtube 视频在桌面浏览器和 iPhone 浏览器中运行良好(即使嵌入在 iPhone 上的应用程序中),所以这似乎是 Android 而不是 YouTube 的问题。

于 2013-04-19T18:36:33.783 回答
0

我在 android WebView 中有一个用于 html5 视频标签的库,它也适用于所有 youtube 视频和大多数 flash 视频,支持进入和退出全屏等功能。

VideoEnabledWebView 通过 cprcrack

于 2015-06-24T23:46:08.557 回答