在Android应用中播放YouTube视频

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

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

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

通过使用webview获得创意,我在iOS上运行良好.我希望它在Android上更直接. docs确实让它听起来很直接.

干杯!

解决方法:

更新:以下所有内容仍然正确,但现在可以使用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方法仅播放低分辨率内容(176×144或类似内容).这是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.

*上有几个关于使用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%).它的速度不够快.

上一篇:如何在Android中的ExoPlayer中播放Youtube视频?


下一篇:android – 获取YouTube视频的标题