8

在我的 Android 应用程序中,我希望用户点击一次图像,自动播放 youtube 视频,视频播放完毕后,用户会立即返回应用程序。在 Android 中执行此操作的最佳方法是什么?

我尝试使用意图。这是因为视频出现在我认为的 youtube 网页上。但是播放视频需要再次点击。如果可能的话,我想避免这种情况。

我尝试了整个 MediaPlayer、prepareAsync、setOnPreparedListener 并没有让它工作。由于某种原因,onPrepared 从未被调用过。没有抛出异常。我正在使用模拟器进行测试,而且我是 Android 新手,所以我不确定物理设备上的行为是否会有所不同。

通过使用 webviews 获得创意,我在 iOS 上运行良好。我希望它在Android上更简单。文档确实使它听起来很直截了当。

干杯!

4

1 回答 1

29

更新:以下所有内容仍然正确,但适用于 Android 的官方 YouTube API现在可用。

到目前为止,在 Android 上播放 YouTube 视频的最简单方法是简单地触发 Intent 以启动原生 Android YouTube 应用程序。当然,如果您使用的不是经过认证的 Google 设备,并且没有 Google 应用程序的补充,这将失败。(Kindle Fire 可能是这种设备的最大例子)。这种方法的问题是,当视频结束时,用户不会自动回到你的应用程序;他们必须按下后退按钮,此时您可能已经丢失了它们。

作为第二种选择,您可以使用 MediaPlayer API 播放 YouTube 视频。但是这种方法有三个注意事项:

1) 您需要调用 YouTube 的 GData 网络服务 API,将视频的 ID 传递给它。您将获得大量元数据,以及您应该传递给 MediaPlayer 以播放 H.264 编码流的 RTSP URL。这可能是您尝试使用 MediaPlayer 失败的原因;您可能没有使用正确的 URL 进行流式传输。

2) GData/MediaPlayer 方式只会播放低分辨率的内容(176x144 或类似的)。这是 YouTube 为防止内容被盗而深思熟虑的决定。当然,这并不能提供非常令人满意的体验。有后门黑客可以获取更高分辨率的流,但并非所有版本的 Android 都支持它们,使用它们违反了 YouTube 的服务条款。

3) RTSP 流可能会被一些内部网络/防火墙阻止,因此这种方法可能不适用于所有用户。

第三个选项是在你的应用程序中嵌入一个 WebView。您可以在这里采取两种方法:

1) 您可以嵌入 Flash 对象并运行 YouTube 的标准桌面 Flash 播放器。您甚至可以使用 Javascript API 来控制播放器,并将事件传递回原生 Android 应用程序。这种方法效果很好,但不幸的是,Flash 在 Android 平台上已被弃用,并且不适用于 Android 4.1 及更高版本。

2) 您可以嵌入<video>标签以通过 HTML5 播放 YouTube。对此的支持因 Android 的不同版本而异。它在 Android 4.0 及更高版本上运行良好;<video>早期版本的 HTML5支持有些参差不齐。因此,根据您的应用程序必须支持的 Android 版本,您可以采用混合方法,在 Android 4.x 或更高版本上嵌入 HTML5,在所有早期版本的 Android 上嵌入 Flash。

StackOverflow 上有几个关于使用 HTML5 播放 YouTube 视频的主题;它们都没有真正描述您必须在一个地方遵循的整个过程。以下是其中一些的链接:

Android - 如何在 WebView 中播放 Youtube 视频?

如何在 Android 上的 WebView 中嵌入 YouTube 剪辑

在 Android WebView 中播放 Youtube HTML5 嵌入视频

在接下来的几周/几个月里,所有这一切都会变得更加容易;在 Google I/O 2012 上,他们展示/演示了一个新的 Android 的 YouTube API,它将支持在您的应用程序中直接嵌入 YouTube 内容,并完全支持 Android 2.2(截至撰写本文时,大约 95% 的 Android 用户群)。它不能足够快地到达。

于 2012-07-18T22:17:53.540 回答