30

編集気にしないでください、YouTube はネイティブ Android API をリリースしました ( https://developers.google.com/youtube/android/player/ )

WebView に HTML5 ビデオビューを表示するアプリケーションがあります。この動画は、YouTube サービス ( http://www.youtube.com/embed/3FFyT039tJ0?autoplay=1&rel=0&showinfo=0&html5=1&start=90&end=176 )から HTML5 に強制されています。

URL でわかるように、パラメーター「start」は、ビデオの再生を開始する必要がある秒数を示します。ここで見られるように、私は WebView によって作成されたオブジェクトを取得するためにのメソッドonShowCustomViewを使用しています。WebChromeClientVideoView

への参照があれば、VideoViewその方法を使用しseekTo()て目標を達成できます。ここまでは問題ありませんが、Android 4.x より前のバージョンのみです。

多くの人が知っているように、4.x 以降の のメソッドonShowCustomViewWebViewChromeClient、ユーザーが「フルスクリーン」モードをクリックしたときにのみ呼び出されますが、ビデオの再生が開始されたときは呼び出されません (4.x 以前の方法)。

要点は、VideoView への参照を取得できず、回避策が見つからないため、90 秒先にシークできないことです。

4

3 に答える 3

1

これから見る人へ

YouTube にプレーヤー API が追加されました: https://developers.google.com/youtube/android/player/

ビューを xml に簡単に配置してアクティビティで処理できる場合の例を以下に示します: https://github.com/youtube/yt-android-player

于 2017-05-02T23:49:36.053 に答える
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();
    }

}

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

    }
};
于 2013-03-25T10:13:00.100 に答える
0

WebViewYouTube 動画を再生するためにまだ使用したい場合は、次の 2 つの点を考慮してください。

  1. Androidのバージョンによっては、できません。Android バージョン 4.x ではWebViewそれができません (または、方法が見つかりませんでした :) ここに投稿したよう
  2. Android 5 以降を使用している場合は、をコンポーネントに設定するWebChromeClient必要があります。WebViewsetWebChromeClient(new WebChromeClient());

それが役に立てば幸い!

于 2016-07-16T11:22:25.940 に答える