Подтвердить что ты не робот

Поиск в YouTube HTML5 видео по Android WebView

EDIT Nevermind, YouTube выпустил собственный API для Android (https://developers.google.com/youtube/android/player/)

У меня есть приложение, которое показывает видеообъявление HTML5 через WebView. Это видео вынуждено быть HTML5 из ​​сервиса YouTube (http://www.youtube.com/embed/3FFyT039tJ0?autoplay=1&rel=0&showinfo=0&html5=1&start=90&end=176 )

Как вы можете видеть в URL-адресе, параметр "start" показывает количество секунд, в которые должно начинаться воспроизведение видео. Я использовал метод onShowCustomView для WebChromeClient, чтобы получить объект VideoView, созданный WebView, как показано здесь.

Когда у меня есть ссылка на VideoView, я могу использовать метод seekTo() для достижения своей цели. До сих пор все в порядке, но только для версий Android ниже 4.x.

Как известно многим, метод onShowCustomView of WebViewChromeClient, начиная с 4.x и forward, вызывается только при нажатии пользователем в режиме "FullScreen", но не при воспроизведении видео (как обычно используется до 4.x).

Итак, дело в том, что я не могу запросить 90 секунд вперед, потому что я не могу получить ссылку на VideoView, и я не могу найти обходное решение.

4b9b3361

Ответ 2

Попробуйте следующее:

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

    }
};

Ответ 3

Если кто-то хочет использовать WebView еще для воспроизведения видео на YouTube, два соображения:

  • В зависимости от версии Android это невозможно. Android версии 4.x через WebView не может этого сделать (или я не нашел способ:) Как я уже писал здесь
  • Если вы находитесь в Android 5 или выше, вы должны установить WebChromeClient в компонент WebView: setWebChromeClient(new WebChromeClient());

Надеюсь, что это поможет!