Reibungsloses Abspielen von YouTube-Videos in der Webansicht

Ich erstelle eine App, in der ein Benutzer eine sehen kannYouTube Video und kann die Bilder sehen, für die der Link vom Server kommt. SpielenYouTube Der Wert des Video-Einbettungsschlüssels kommt vom Server als

`<div id =" _ cvp_11204 "> <span> </ span> </ div> <script type =" text / javascript "> (function () {var a; a = new XMLHttpRequest; a.onreadystatechange = function () {rs = a.readyState; if (4 == rs && 200 == a.status) {var c = JSON.parse (a.responseText), b; for (b in c.payload) if (c.payload.hasOwnProperty ( b)) {var d = c.payload [b]; document.getElementById ("cvp"+ b) .innerHTML = d.view}}}; a.open (" GET "," GET ")http://dummyurl.com/media.ids=?11134 )); a.send ()}) (Fenster);

&lt;/script&gt;`

und ich bin in der Lage, das Video auch wiederzugeben, aber ich stehe nur wenigen Problemen in Bezug auf die Leistung gegenüber.

1) Manchmal beginnen Stimmen, aber das Video wird nach einiger Zeit angezeigt.

2) Manchmal werden keine Steuerelemente angezeigt.

3) Wie kann ich das Video direkt im Vollbildmodus abspielen? Um das Video im Vollbildmodus abzuspielen, muss ich auf das Steuerelement Max klicken, um es abzuspielen.

Wie ist die Aktivitätsklasse für Webview

public class MainActivity extends Activity {

    protected FrameLayout webViewPlaceholder;
    protected WebView webView;
    private FrameLayout mContentView;
    private MyWebChromeClient mWebChromeClient = null;
    private View mCustomView;
    private FrameLayout mCustomViewContainer;
    private WebChromeClient.CustomViewCallback mCustomViewCallback;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        System.out.println("Oncreate is getting called ---------------------------");
        // Initialize the UI
        if(savedInstanceState == null){
            initUI();   
        }

      }

      protected void initUI()
      {
        // Retrieve UI elements
        webViewPlaceholder = ((FrameLayout)findViewById(R.id.webViewPlaceholder));
        mContentView = webViewPlaceholder;
        // Initialize the WebView if necessary
        if (webView == null)
        {
            System.out.println("webView == null -----------------------------------");
          // Create the webview
          webView = new WebView(this);
          webView.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
          WebSettings webSettings = webView.getSettings();
          webSettings.setJavaScriptEnabled(true);
            webSettings.setDomStorageEnabled(true);
            webSettings.setAllowContentAccess(true);
            webSettings.setDomStorageEnabled(true);
            webSettings.setRenderPriority(RenderPriority.HIGH);     
            webSettings.setUseWideViewPort(false);
            webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
            webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
            //--------------------------------------------------------
            if (Build.VERSION.SDK_INT < 8) {
                webSettings.setPluginsEnabled(true);
            } else {
                webSettings.setPluginState(PluginState.ON);
            }
          mWebChromeClient = new MyWebChromeClient();
          webView.setWebChromeClient(mWebChromeClient);
          // Load the URLs inside the WebView, not in the external web browser
          //webView.setWebViewClient(new WebViewClient());
          // Load a page
          loadWebView("asfas");
        }



        // Attach the WebView to its placeholder
        webViewPlaceholder.addView(webView);
      }

      private void loadWebView(final String url) {
            String s = ReadFromfile("link.txt", MainActivity.this);

            s = "<html><body>"+s+"</body></html>";
            webView.loadDataWithBaseURL("",Html.fromHtml(s).toString(),"text/html", "UTF-8",null);
        }

        public String ReadFromfile(String fileName, Context context) {
            StringBuilder ReturnString = new StringBuilder();
            InputStream fIn = null;
            InputStreamReader isr = null;
            BufferedReader input = null;
            try {
                fIn = context.getResources().getAssets()
                        .open(fileName, context.MODE_WORLD_READABLE);
                isr = new InputStreamReader(fIn);
                input = new BufferedReader(isr);
                String line = "";
                while ((line = input.readLine()) != null) {
                    ReturnString.append(line);
                }
            } catch (Exception e) {
                e.getMessage();
            } finally {
                try {
                    if (isr != null)
                        isr.close();
                    if (fIn != null)
                        fIn.close();
                    if (input != null)
                        input.close();
                } catch (Exception e2) {
                    e2.getMessage();
                }
            }
            return ReturnString.toString();
        }


      @Override
      public void onConfigurationChanged(Configuration newConfig)
      {
        if (webView != null)
        {
          // Remove the WebView from the old placeholder
        System.out.println("web view is removed from the holder -------------------------");    
          webViewPlaceholder.removeView(webView);
        }

        super.onConfigurationChanged(newConfig);

        // Load the layout resource for the new configuration
        setContentView(R.layout.activity_main);

        // Reinitialize the UI
        initUI();
      }

      @Override
      protected void onSaveInstanceState(Bundle outState)
      {
        super.onSaveInstanceState(outState);
        System.out.println("onSaveInstanceState -------------------------");    
        // Save the state of the WebView
        webView.saveState(outState);
      }

      @Override
      protected void onRestoreInstanceState(Bundle savedInstanceState)
      {
        super.onRestoreInstanceState(savedInstanceState);
        System.out.println("onRestoreInstanceState -------------------------"); 
        // Restore the state of the WebView
        webView.restoreState(savedInstanceState);
      }
      private class MyWebChromeClient extends WebChromeClient {
            FrameLayout.LayoutParams LayoutParameters = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
                    FrameLayout.LayoutParams.MATCH_PARENT);

            @Override
            public void onShowCustomView(View view, CustomViewCallback callback) {
                // if a view already exists then immediately terminate the new one
                if (mCustomView != null) {
                    callback.onCustomViewHidden();
                    return;
                }

                mContentView.setVisibility(View.GONE);
                mCustomViewContainer = new FrameLayout(MainActivity.this);
                mCustomViewContainer.setLayoutParams(LayoutParameters);
                mCustomViewContainer.setBackgroundResource(android.R.color.black);
                view.setLayoutParams(LayoutParameters);
                // Sometimes getting remove view first it parent excepetion on moto devices
                //webViewPlaceholder.removeView(webView);
                mCustomViewContainer.addView(view);
                mCustomView = view;
                mCustomViewCallback = callback;
                mCustomViewContainer.setVisibility(View.VISIBLE);
                setContentView(mCustomViewContainer);
            }

            @Override
            public void onHideCustomView() {
                if (mCustomView == null) {
                    return;
                } else {
                    // Hide the custom view.  
                    mCustomView.setVisibility(View.GONE);
                    // Remove the custom view from its container.  
                    mCustomViewContainer.removeView(mCustomView);
                    mCustomView = null;
                    mCustomViewContainer.setVisibility(View.GONE);
                    mCustomViewCallback.onCustomViewHidden();
                    // Show the content view.  
                    mContentView.setVisibility(View.VISIBLE);
                    setContentView(mContentView);
                }
            }

        }

}

Und im Manifest habe ich auch das gesetzthardwareaccelarated = true. Hier ist das Video, wenn es mit Steuerelementen beginnt

und hier, wenn ich auf die Schaltfläche Maximieren klicke, wird das Video im Vollbildmodus wiedergegeben, was ich möchte, ohne auf die Schaltfläche Max zu klicken, aber das Video sollte direkt im Vollbildmodus abgespielt werden.

Also vor allem, wie ich die Leistung meiner beschleunigen und steigern kannWebView?

Antworten auf die Frage(0)

Ihre Antwort auf die Frage