在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或任何其他方式的任何解决方案。 感谢所有响应者!

  • 当我们滚动时,YouTubevideo播放器与其他布局重叠
  • Youtube数据API:访问媒体stream和播放(JAVA)
  • 如何在Android的ExoPlayer中播放YouTubevideo?
  • 如何在Android上的WebView中嵌入YouTube剪辑
  • android youtube下载url 403禁止
  • Android YouTube api v3 - 定位
  • 在Android WebView中播放Youtube HTML5嵌入式video
  • 如何在Android中使用YouTube数据APIsearchvideo
  • 您可以使用官方的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 。