Android - WebView无法播放YouTube视频

时间:2013-07-15 20:11:23

标签: android webview android-webview

我有一些WebView代码,我试图在YouTube频道上播放YouTube视频。但它所做的只是在视频上显示微调器图标,而不是实际启动视频。有谁知道如何解决这个问题?

public class YoutubeActivity extends Activity
{
    WebView webview = null;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);   

        webview = new WebView(this);
        webview.getSettings().setAppCacheEnabled(false);
        webview.getSettings().setJavaScriptEnabled(true);
        webview.setInitialScale(1);
        webview.getSettings().setPluginState(PluginState.ON);

        webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });


        WebSettings webSettings = webview.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setBuiltInZoomControls(true);
        //webSettings.getMediaPlaybackRequiresUserGesture();
        webSettings.setAllowContentAccess(true);
        webSettings.setEnableSmoothTransition(true);
        webSettings.setLoadsImagesAutomatically(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setSupportZoom(true);
        webSettings.setUseWideViewPort(true);

        setContentView(webview);
        webview.loadUrl("http://www.youtube.com/g33ktalktv");           
    }

    public void onBackPressed ( )
    {
        //Class.forName("com.***.HTML5WebView").getMethod("onPause", (Class[]) null).
        //invoke(html5WebView, (Object[]) null);
        webview.clearView();
    } 

    @Override
    public void onStop()
    {
       super.onStop();
       // your code

       webview.clearView();
    }
}

这是明确的设置:

<activity
    android:name="YoutubeActivity"
    android:label="Some string" 
    android:hardwareAccelerated="true"/>

提前谢谢!

3 个答案:

答案 0 :(得分:10)

使用WebView播放YouTube视频需要在不同的Android操作系统版本上进行大量测试和调试,因为Android 2.x和4.x之间的功能和错误不同。

使用YouTube Android Player API将YouTube视频嵌入到您自己的应用中时,可以使用sample app进行更少控制的错误方法是{{3}}所以如果您关注的话应该不会太难他们的步骤。

答案 1 :(得分:2)

您是否尝试过使用自己的WebChromeClient?这个问题似乎很重要。 WebView and HTML5 <video>

您需要创建其中一个并自行实现,类似于您为WebViewClient所做的操作。

webview.setWebChromeClient(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);
                a.setContentView(video);
                video.setOnCompletionListener(this);
                video.setOnErrorListener(this);
                video.start();
            }
        }
    }
});

确保将webview.getSettings().setPluginsEnabled(true);添加到您的网络视图设置。

最重要的是,要在WebView中加载任何网页,请务必在您的清单中获得INTERNET权限:

<uses-permission android:name="android.permission.INTERNET"/>

答案 2 :(得分:0)

使用

<application
        android:hardwareAccelerated="true"
        android:allowBackup="true">
</application>

完美的工作。