如何在WebView Android上自动播放iframe YouTube

use*_*394 5 youtube iframe android webview

我在我的应用程序中使用android webview来显示来自youtube的视频,效果很好。

但我希望它是自动播放的。

这是我的活动,我在videoUrl后面附加了“?autoplay = 1”,但没有任何变化,它仍然不是自动播放。

public class LandVideoAct extends Activity {
    WebView mWebView;
    String videoURL = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.landfull);
        videoURL = "http://www.youtube.com/embed/VYIi49czywo?autoplay=1";
        mWebView = (WebView) findViewById(R.id.fullwebview);

        String vid = "<html><body style=\"margin: 0; padding: 0\"><iframe  width=\"100%\" height=\"100%\" src=\""+videoURL+"\" type=\"text/html\" frameborder=\"0\"></iframe><body><html>";

        WebChromeClient mWebChromeClient = new WebChromeClient(){
            public void onProgressChanged(WebView view, int newProgress) {
            }
        };

        mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
        mWebView.setWebChromeClient(mWebChromeClient);
        mWebView.setWebViewClient(new WebViewClient() {
            public void onPageFinished(WebView view, String url) {
                mWebView.loadUrl("javascript:(function() { document.getElementsByTagName('video')[0].play(); })()"); 
            }
        });
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setAppCacheEnabled(true);
        mWebView.setInitialScale(1);
        mWebView.getSettings().setLoadWithOverviewMode(true);
        mWebView.getSettings().setUseWideViewPort(true);
        if (Build.VERSION.SDK_INT < 17) {
            Log.i("GPSNETWORK", "<17");
        } else {
            Log.i("GPSNETWORK", Build.VERSION.SDK_INT+">=17");
            mWebView.getSettings().setMediaPlaybackRequiresUserGesture(false);
        }
        mWebView.loadData(vid, "text/html", "UTF-8");
    }
}
Run Code Online (Sandbox Code Playgroud)

Sha*_*Orr 5

看看这个问题。有一些建议可能对您有用,但是提出这个问题的人没有说这是否对他们有用。

我读到的大部分内容都是说大多数移动平台都会阻止自动播放以避免糟糕的用户体验。

您可以尝试下面的 JavaScript 代码:

var myvideo = document.getElementsByTagName('video')[0]; myvideo.play();
Run Code Online (Sandbox Code Playgroud)

对于 Android 4.2.2+ 尝试将其添加到您的本机代码中:

WebView.getSettings().setMediaPlaybackRequiresUserGesture(false);
Run Code Online (Sandbox Code Playgroud)

另请查看此页面。添加以下代码来自动播放视频:

webview.setWebViewClient(new WebViewClient() {
        // autoplay when finished loading via javascript injection
        public void onPageFinished(WebView view, String url) { webview.loadUrl("javascript:(function() { document.getElementsByTagName('video')[0].play(); })()"); }
    });
    webview.setWebChromeClient(new WebChromeClient());

    webview.loadUrl("http://html5demos.com/video");
}
Run Code Online (Sandbox Code Playgroud)


VVB*_*VVB 2

我认为这在 webview 或 android 浏览器中是不可能的。要实现自动播放,我认为你需要“YOUTUBE API”。

检查以下链接:

1]有没有办法在android平台上自动播放视频?

2] Youtube Api Android 自动启动

上面的这些链接将让您了解自动播放以及 youtube api。