通过Android WebView在YouTube HTML5video中寻求前进

编辑没关系,YouTube发布了原生Android API( https://developers.google.com/youtube/android/player/ )

我有一个应用程序显示在WebView上的HTML5video。 该video被强制为来自YouTube服务的HTML5( http://www.youtube.com/embed/3FFyT039tJ0?autoplay=1&rel=0&showinfo=0&html5=1&start=90&end=176 )

正如您在URL中看到的那样,参数“start”显示video必须开始播放的秒数。 我已经使用onShowCustomViewWebChromeClient方法来获取由WebView创build的VideoView对象,如下所示。

当我有对VideoView的引用时,我可以使用seekTo()方法来实现我的目标。 直到这里一切都很好,但只适用于低于4.x的Android版本。

许多人都知道, WebViewChromeClient的方法onShowCustomView (从4.x开始)只在用户点击“FullScreen”模式时才被调用,而不是在video开始播放时(在4.x之前如何)。

所以,重点是我无法向前查找90秒,因为我无法获得对VideoView的引用,而且找不到任何解决方法。

  • 将youtube集成到片段
  • Youtube API权限403禁止错误
  • 在Android应用中嵌入Youtubevideo
  • stream媒体Youtubevideo
  • 如何在Android上的WebView中嵌入YouTube剪辑
  • 继续播放YouTube播放器,同时以独立的方向布局旋转设备
  • 来自Youtube的Java,Android下载video代码
  • Android Youtube Player Api活动完成并创build
  • 为未来的观众

    YouTube现在有一个播放器API: https //developers.google.com/youtube/android/player/

    在那里你可以很容易地在xml中放置一个视图,并在活动中处理它,这里是一些例子: https //github.com/youtube/yt-android-player

    如果有人想使用WebView来播放YouTubevideo,需要考虑以下两点:

    1. 根据Android版本,这是不可能的。 Android版本4.x通过WebView无法做到这一点(或者我没有find方法:)正如我张贴在这里
    2. 如果您使用的是Android 5或更高版本,则必须将WebChromeClient设置为WebView组件: setWebChromeClient(new WebChromeClient());

    希望能帮助到你!

    试试这个:

      wv.getSettings().setPluginsEnabled(true); DisplayMetrics metrics = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); int w1 = (int) (metrics.widthPixels / metrics.density), h1 = w1 * 3 / 5; String item="http://www.youtube.com/embed/3FFyT039tJ0"; wv.getSettings().setJavaScriptEnabled(true); wv.setWebChromeClient(chromeClient); wv.getSettings().setPluginsEnabled(true); try { wv.loadData( "<html><body><iframe class=\"youtube-player\" type=\"text/html5\" width=\"" + (w1 - 20) + "\" height=\"" + h1 + "\" src=\"" + item + "\" frameborder=\"0\"\"allowfullscreen\"></iframe></body></html>", "text/html5", "utf-8"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } 

    然后写一个webchrome客户端,如下所示:

     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(); } } } };