web-dev-qa-db-ja.com

WebViewでYouTubeビデオを再生する

私のAndroidアプリでは、ウェブサイトからのhtmlデータを表示するWebViewがあります。ページにYouTube埋め込みオブジェクトが含まれる場合があります。これは、アプリに正しく表示されません。方法はありますか? WebViewでYouTubeビデオを表示/再生しますか?ありがとうございます。

14
Ionic Walrus

おそらくFlashを搭載したデバイスを除いて、それらを埋め込んで表示することはできません。

ただし、YouTube動画の詳細を解析できる場合は、YouTubeアプリケーションに表示されるACTION_VIEWIntentを作成できる可能性があります...それらのAndroid YouTubeアプリケーションを備えたデバイス。

HTML5の<video>タグを試すこともできます。これは、AFAIKがブラウザアプリケーションでサポートされているため、WebViewで機能する可能性があります。

8
CommonsWare

私はこの投稿に出くわしました: リンク

実際、基本的には、アプリケーションのマニフェストxmlに追加するだけで済みます。

Android:hardwareAccelerated="true"

そして出来上がり、YouTubeビデオでさえ再生を開始しました

7
Ronnie
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)は、次のようなURLでshouldOverrideUrlLoadingメッセージを送信します。

vnd.youtube:{VIDEO_ID}?{PARMS}

これを解析して http://www.youtube.com/v/ {VIDEO_ID}に変換し、この改訂されたURLをインテントとして渡します。

私のために働く...

6
CSmith

ここでAndroid-developersグループに関する私の投稿を読んでください: エミュレーターのYouTube?

基本的に、YouTubeクリップを再生する最良の方法は、独自のアクティビティを作成することです。これは素晴らしい例です。 アプリを磨く:無料の埋め込み可能Android YouTubeアクティビティ!

更新:YouTubeトークンの変更による非互換性の問題が修正されました。コンポーネントの最新バージョンは、公開されているYouTubeビデオで問題なく機能するはずです。

4
Felix

ウェブサイトを切り替えて、フラッシュバージョンの代わりに YouTubeプレーヤーのHTML5バージョン を埋め込むことができます。これが100%動作するかどうかはまだわかりませんが、現在フラッシュをサポートしていないデバイスでは、フラッシュバージョンよりも明らかに動作します。

編集:HTML5バージョンでもブラウザがH.264コーデックをサポートする必要があるように見えることを忘れないでください。これはAndroidデバイスは現在サポートしています。

2
Mark B

Android WebViewにはhtml5ビデオタグに使用するライブラリがあります。これはすべてのYouTubeビデオとほとんどのフラッシュビデオでも機能し、他の機能の中でもフルスクリーンの出入りをサポートします。

cprcrackによるVideoEnabledWebView

0
Grux

埋め込まれたYouTubeビデオは、デスクトップブラウザとiPhoneブラウザ(iPhoneのアプリに埋め込まれている場合でも)で正常に機能するため、YouTubeではなくAndroid)に問題があるようです。

0
user2023807