在我的Android应用中,我希望用户点按一次图片,自动播放YouTube视频,当视频完成后,用户会立即返回应用。 在Android中执行此操作的最佳方式是什么?
我尝试过使用意图。这是因为视频出现在我认为是youtube的网页上。但播放视频需要再次点按。如果可能的话,我想避免这种情况。
我尝试了整个MediaPlayer,prepareAsync,setOnPreparedListener,但从未让它工作。出于某种原因onPrepared从未被调用过。没有例外被抛出。我正在使用模拟器进行测试,而且我是Android新手,因此我不确定物理设备上的行为是否会有所不同。
通过使用网页视图获得创意,我在iOS上运行良好。我希望它在Android上更直接。 docs确实让它听起来很直接。
干杯!
答案 0 :(得分:29)
更新:以下所有内容仍然正确,但official YouTube API for Android现已可用。
到目前为止,在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及更高版本上运行良好;早期版本的HTML5 <video>
支持有点不稳定。因此,根据您的应用程序必须支持的Android版本,您可以采用混合方法在Android 4.x或更高版本中嵌入HTML5,并为所有早期版本的Android嵌入Flash。
StackOverflow上有几个关于使用HTML5播放YouTube视频的主题;他们都没有真正描述你必须在一个地方遵循的整个过程。这里有一些链接:
Android - How to play Youtube video in WebView?
How to embed a YouTube clip in a WebView on Android
Play Youtube HTML5 embedded Video in Android WebView
所有这些将在未来几周/几个月内变得非常容易;在Google I / O 2012上,他们提供/演示了一个新的Android YouTube应用程序,支持在您的应用程序中直接嵌入YouTube内容,并完全支持Android 2.2(截至撰写本文时约占Android用户群的95%)。它的速度不够快。