在我的 android 应用程序中,我有一个 WebView 来显示来自我们网站的 html 数据。有时该页面会有 youtube 嵌入对象。这在应用程序中没有正确显示。有没有办法在 WebView 中显示/播放 youtube 视频?谢谢。
7 回答
除了可能在具有 Flash 的设备上之外,您不能将它们显示为嵌入的。
但是,如果您可以解析 YouTube 视频详细信息,则可以构建一个ACTION_VIEW
Intent
将在 YouTube 应用程序上显示它们的内容……对于那些具有 YouTube 应用程序的 Android 设备。
您还可以尝试使用 HTML5 的<video>
标签,AFAIK 在浏览器应用程序中受支持,因此可以在WebView
.
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 传递。
为我工作...
在此处阅读我在 android-developers 组上的帖子:模拟器中的 YouTube?
基本上,播放 YouTube 剪辑的最佳方式是为其创建自己的 Activity,这是一个很好的示例:波兰您的应用程序:免费的可嵌入 Android YouTube Activity!
更新:由于 YouTube 令牌更改导致的不兼容问题已得到修复。该组件的最新版本应该适用于公共 YouTube 视频。
您可以尝试切换您的网站以嵌入YouTube 播放器的 HTML5 版本,而不是 Flash 版本。仍然不确定这是否会 100% 工作,但它显然会比当前不支持闪存的设备上的闪存版本更好。
编辑:没关系,看起来 HTML5 版本还要求浏览器支持 H.264 编解码器,它看起来不像任何 Android 设备目前支持。
嵌入式 youtube 视频在桌面浏览器和 iPhone 浏览器中运行良好(即使嵌入在 iPhone 上的应用程序中),所以这似乎是 Android 而不是 YouTube 的问题。
我在 android WebView 中有一个用于 html5 视频标签的库,它也适用于所有 youtube 视频和大多数 flash 视频,支持进入和退出全屏等功能。