私のAndroidアプリでは、ウェブサイトからのhtmlデータを表示するWebViewがあります。ページにYouTube埋め込みオブジェクトが含まれる場合があります。これは、アプリに正しく表示されません。方法はありますか? WebViewでYouTubeビデオを表示/再生しますか?ありがとうございます。
おそらくFlashを搭載したデバイスを除いて、それらを埋め込んで表示することはできません。
ただし、YouTube動画の詳細を解析できる場合は、YouTubeアプリケーションに表示されるACTION_VIEW
Intent
を作成できる可能性があります...それらのAndroid YouTubeアプリケーションを備えたデバイス。
HTML5の<video>
タグを試すこともできます。これは、AFAIKがブラウザアプリケーションでサポートされているため、WebView
で機能する可能性があります。
私はこの投稿に出くわしました: リンク
実際、基本的には、アプリケーションのマニフェストxmlに追加するだけで済みます。
Android:hardwareAccelerated="true"
そして出来上がり、YouTubeビデオでさえ再生を開始しました
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をインテントとして渡します。
私のために働く...
ここでAndroid-developersグループに関する私の投稿を読んでください: エミュレーターのYouTube?
基本的に、YouTubeクリップを再生する最良の方法は、独自のアクティビティを作成することです。これは素晴らしい例です。 アプリを磨く:無料の埋め込み可能Android YouTubeアクティビティ!
更新:YouTubeトークンの変更による非互換性の問題が修正されました。コンポーネントの最新バージョンは、公開されているYouTubeビデオで問題なく機能するはずです。
ウェブサイトを切り替えて、フラッシュバージョンの代わりに YouTubeプレーヤーのHTML5バージョン を埋め込むことができます。これが100%動作するかどうかはまだわかりませんが、現在フラッシュをサポートしていないデバイスでは、フラッシュバージョンよりも明らかに動作します。
編集:HTML5バージョンでもブラウザがH.264コーデックをサポートする必要があるように見えることを忘れないでください。これはAndroidデバイスは現在サポートしています。
Android WebViewにはhtml5ビデオタグに使用するライブラリがあります。これはすべてのYouTubeビデオとほとんどのフラッシュビデオでも機能し、他の機能の中でもフルスクリーンの出入りをサポートします。
埋め込まれたYouTubeビデオは、デスクトップブラウザとiPhoneブラウザ(iPhoneのアプリに埋め込まれている場合でも)で正常に機能するため、YouTubeではなくAndroid)に問題があるようです。