通过Android WebView在YouTube HTML5视频中寻求前进

man*_*ard 30 youtube video html5 android

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

我有一个应用程序,通过WebView显示HTML5视频.此视频被迫通过YouTube服务获得HTML5(http://www.youtube.com/embed/3FFyT039tJ0?autoplay=1&rel=0&showinfo=0&html5=1&start=90&end=176 )

正如您在URL中看到的,参数"start"显示视频必须开始播放的秒数.我一直在使用该方法onShowCustomViewWebChromeClient获得VideoView通过的WebView创建的对象,因为看到这里.

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

正如你们许多人知道,方法onShowCustomViewWebViewChromeClient,从4.x和前进,当用户点击"全屏"模式只调用,但在视频开始时不打(如何使用是4.x版之前).

所以,重点是我不能向前寻求90秒,因为我无法获得对VideoView的引用,我找不到任何解决方法.

小智 0

试试这个:

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

}
Run Code Online (Sandbox Code Playgroud)

并编写一个像这样的 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();
            }
        }

    }
};
Run Code Online (Sandbox Code Playgroud)