Embed Youtube video inside an Android app

后端 未结 9 1386
野性不改
野性不改 2021-01-29 23:01

I\'m using a WebView for displaying embedded Youtube video and that works on Galaxcy S2 (OS 2.3.5) and doesn\'t on Nexus S (OS 2.3.4), all I get is white screen without any vide

9条回答
  •  心在旅途
    2021-01-29 23:37

    although I suggest to use youtube api or call new intent and make the system handle it (i.e. youtube app), here some code that can help you, it has a call to an hidden method because you can't pause and resume webview

    import java.lang.reflect.Method;
    
    import android.annotation.SuppressLint;
    import android.os.Bundle;
    import android.webkit.WebChromeClient;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    
    import android.app.Activity;
    
    @SuppressLint("SetJavaScriptEnabled")
    public class MultimediaPlayer extends Activity
    {
        private WebView mWebView;
        private boolean mIsPaused = false;
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.webview);
    
            String media_url = VIDEO_URL;
    
            mWebView = (WebView) findViewById(R.id.webview);
            mWebView.setWebChromeClient(new WebChromeClient());
    
            WebSettings ws = mWebView.getSettings();
            ws.setBuiltInZoomControls(true);
            ws.setJavaScriptEnabled(true);
    
            mIsPaused = true;
            resumeBrowser();
            mWebView.loadUrl(media_url);
        }
    
        @Override
        protected void onPause()
        {
            pauseBrowser();
            super.onPause();
        }
    
        @Override
        protected void onResume()
        {
            resumeBrowser();
            super.onResume();
        }
    
        private void pauseBrowser()
        {
            if (!mIsPaused)
            {
                // pause flash and javascript etc
                callHiddenWebViewMethod(mWebView, "onPause");
                mWebView.pauseTimers();
                mIsPaused = true;
            }
        }
    
        private void resumeBrowser()
        {
            if (mIsPaused)
            {
                // resume flash and javascript etc
                callHiddenWebViewMethod(mWebView, "onResume");
                mWebView.resumeTimers();
                mIsPaused = false;
            }
        }
    
        private void callHiddenWebViewMethod(final WebView wv, final String name)
        {
            try
            {
                final Method method = WebView.class.getMethod(name);
                method.invoke(mWebView);
            } catch (final Exception e)
            {}
        }
    }
    

提交回复
热议问题