2012-07-18 250 views
8

在我的Android應用中,我希望用戶點擊一次圖片,自動播放YouTube視頻,當視頻完成後,用戶立即返回到應用。 在Android中執行此操作的最佳方法是什麼?在Android應用中播放YouTube視頻

我嘗試過使用意圖。這是因爲視頻出現在我認爲是YouTube的網頁上。然而,播放視頻需要另一個水龍頭。如果可能,我想避免這種情況。

我嘗試了整個MediaPlayer,prepareAsync,setOnPreparedListener,並沒有得到它的工作。由於某種原因,onPrepared從未被調用過。沒有例外被拋出。我正在使用模擬器進行測試,並且我是Android新手,因此我不確定這些行爲在物理設備上會有所不同。

我通過使用webviews獲得創意,在iOS上獲得了良好的工作效果。我希望在Android上它更直接。 docs確實讓它聽起來很直接。

乾杯!

+0

這可能有助於http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ – ASP 2017-04-07 13:42:47

回答

29

更新:下面的一切仍然正確,但official YouTube API for Android現在可用。

到目前爲止,在Android上播放YouTube視頻最簡單的方法是簡單地啓動意圖以啓動本機Android YouTube應用。當然,如果您不在經過認證的Google設備上,該設備就無法使用Google應用程序。 (Kindle Fire可能是這種設備的最大例子)。這種方法的問題在於,視頻結束時用戶不會自動關閉應用程序,他們必須按下「後退」按鈕,此時您可能會丟失它們。

作爲第二種選擇,您可以使用MediaPlayer API播放YouTube視頻。但這種方法有三個注意事項:

1)您需要撥打YouTube的GData webservice API,並將其傳遞給視頻的ID。您將獲得大量的元數據,以及您應該傳遞給MediaPlayer播放H.264編碼流的RTSP URL。這可能是您嘗試使用MediaPlayer失敗的原因;您可能沒有使用正確的網址進行流式傳輸。

2)GData/MediaPlayer方法將只播放低分辨率內容(176x144或類似)。這是YouTube的一項蓄意決定,以防止內容被盜。當然,這並不能提供非常令人滿意的體驗。有後門黑客可以獲得更高分辨率的視頻流,但所有版本的Android都不支持它們,使用它們違反了YouTube的服務條款。

3)RTSP流可以被一些內部網絡/防火牆阻止,所以這種方法可能不適用於所有用戶。

第三個選項是將WebView嵌入到您的應用程序中。有兩種方法可以採取在這裏:

1)您可以嵌入Flash對象和運行標準桌面Flash播放YouTube上。您甚至可以使用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 API,支持將YouTube內容直接嵌入到您的應用程序中,完全支持Android 2.2(截至撰寫本文時,大約95%爲Android用戶羣)。它不能夠快到。

+0

即將推出的API聽起來不錯!謝謝(你的)信息。 – SundayMonday 2012-07-18 22:29:32

+0

我會對你提到的那些後門黑客感興趣。我想補充一點,有些設備無法在Google Play上看到Adobe Flash的下載,從而有效地破壞了依靠YouTube的Flash播放器爲Froyo,Gingerbread和Honeycomb實施的混合策略。 – 2012-07-18 22:29:59

+0

@Giuilo - 在我們的應用程序中,如果Flash不存在,我們會回到GData/MediaPlayer API。它比黑屏更好。 – mportuesisf 2012-07-18 22:31:23

相關問題