在Android应用中嵌入Youtubevideo

我正在使用WebView显示嵌入式Youtubevideo并且可以在Galaxcy S2(OS 2.3.5)上运行而在Nexus S(OS 2.3.4)上运行,我得到的只是白屏而没有任何video显示。

这是我正在使用的代码片段和Manifest文件中的声明:

private WebView wv; private void setWebView() { wv = (WebView) findViewById(R.id.webView); wv.setWebChromeClient(new WebChromeClient()); wv.getSettings().setPluginState(WebSettings.PluginState.ON); wv.setWebViewClient(new WebViewClient()); wv.getSettings(); wv.setBackgroundColor(0x00000000); wv.setKeepScreenOn(true); wv.setHorizontalScrollBarEnabled(false); wv.setVerticalScrollBarEnabled(false); wv.getSettings().setBuiltInZoomControls(true); final String mimeType = "text/html"; final String encoding = "UTF-8"; String html = getHTML(); wv.loadDataWithBaseURL("", html, mimeType, encoding, ""); } public String getHTML() { String html = "" + "" + "" + "" + "" + "" + ""; return html; } 

注意:参数“selected_video”是video的散列(VideoID)。

清单文件中的声明:

  <manifest xmlns:android=http://schemas.android.com/apk/res/android . .     . . 

如果您在我的代码中识别出我应该更改的任何内容,请帮助我,或者帮助我们完整的代码,这些代码可以支持所有Android设备和操作系统,以显示高质量的嵌入式(In-App)Youtubevideo。

更新:注意,我正在寻找的解决方案应该显示高分辨率video。 我使用VideoView类在不同的设备和操作系统上工作,但video质量不够好。 因此,只有在显示高质量的YouTubevideo时才会接受包括VideoView或WebView或任何其他方式的任何解决方案。 感谢所有响应者!

Solutions Collecting From Web of "在Android应用中嵌入Youtubevideo"

您可以使用官方的YouTube Android播放器API 。 这有点复杂,但它比使用webclients的其他解决方案更好。

首先,您必须在Googles API控制台中注册您的应用。 这是完全免费的,直到你的应用程序一个月超过25k请求(或类似的东西)。 链接下有完整的anf很棒的教程。 我希望你能理解它们。 如果没有,请问! 🙂

虽然我建议使用youtube api或调用新意图并使系统处理它(即youtube app),这里有一些可以帮助你的代码,它有一个隐藏方法的调用,因为你无法暂停和恢复webview

 import java.lang.reflect.Method; import android.annotation.SuppressLint; import android.os.Bundle; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.app.Activity; @SuppressLint("SetJavaScriptEnabled") public class MultimediaPlayer extends Activity { private WebView mWebView; private boolean mIsPaused = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webview); String media_url = VIDEO_URL; mWebView = (WebView) findViewById(R.id.webview); mWebView.setWebChromeClient(new WebChromeClient()); WebSettings ws = mWebView.getSettings(); ws.setBuiltInZoomControls(true); ws.setJavaScriptEnabled(true); mIsPaused = true; resumeBrowser(); mWebView.loadUrl(media_url); } @Override protected void onPause() { pauseBrowser(); super.onPause(); } @Override protected void onResume() { resumeBrowser(); super.onResume(); } private void pauseBrowser() { if (!mIsPaused) { // pause flash and javascript etc callHiddenWebViewMethod(mWebView, "onPause"); mWebView.pauseTimers(); mIsPaused = true; } } private void resumeBrowser() { if (mIsPaused) { // resume flash and javascript etc callHiddenWebViewMethod(mWebView, "onResume"); mWebView.resumeTimers(); mIsPaused = false; } } private void callHiddenWebViewMethod(final WebView wv, final String name) { try { final Method method = WebView.class.getMethod(name); method.invoke(mWebView); } catch (final Exception e) {} } } 

它的工作原理如下:

 String item = "http://www.youtube.com/embed/"; String ss = "your url"; ss = ss.substring(ss.indexOf("v=") + 2); item += ss; DisplayMetrics metrics = getResources().getDisplayMetrics(); int w1 = (int) (metrics.widthPixels / metrics.density), h1 = w1 * 3 / 5; wv.getSettings().setJavaScriptEnabled(true); wv.setWebChromeClient(chromeClient); wv.getSettings().setPluginsEnabled(true); try { wv.loadData( "", "text/html5", "utf-8"); } catch (Exception e) { e.printStackTrace(); } private WebChromeClient chromeClient = new WebChromeClient() { @Override public void onShowCustomView(View view, CustomViewCallback callback) { super.onShowCustomView(view, callback); if (view instanceof FrameLayout) { FrameLayout frame = (FrameLayout) view; if (frame.getFocusedChild() instanceof VideoView) { VideoView video = (VideoView) frame.getFocusedChild(); frame.removeView(video); video.start(); } } } }; 

在Android中嵌入YouTube播放器非常简单,几乎不需要10分钟,

 1) Enable YouTube API from Google API console 2) Download YouTube player Jar file 3) Start using it in Your app 

以下是详细步骤http://www.feelzdroid.com/2017/01/embed-youtube-video-player-android-app-example.html 。

只要参考它,如果你遇到任何问题,请告诉我,不要帮助你

看起来如何:

在此处输入图像描述

我的案例的最佳解决方案。 我需要video适合网页视图大小。 将youtube链接与您的videoID一起使用。 例:

 WebView youtubeWebView; //todo find or bind web view String myVideoYoutubeId = "-bvXmLR3Ozc"; outubeWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } }); WebSettings webSettings = youtubeWebView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setLoadWithOverviewMode(true); webSettings.setUseWideViewPort(true); youtubeWebView.loadUrl("https://www.youtube.com/embed/" + myVideoYoutubeId); 

Web查看xml代码

  

video质量取决于使用API​​的连接速度

或者,除了没有YouTube应用程序的API以外,您可以点击此链接

请参阅此答案: 我们如何使用webview在Android应用程序中播放YouTube嵌入式代码?

它使用WebViews并在其中加载iframe ……是的,它可以工作。

从谷歌使用这个Youtube Embed API 。