1

YouTubeユーザーがビデオを見ることができ、サーバーからのリンクの画像を見ることができるアプリを構築しています。ビデオ埋め込みキーの値を再生するYouTubeには、サーバーから次のように取得されます

`<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"," http://dummyurl.com /media.ids=?11134 ));a.send()})(ウィンドウ);

&lt;/script&gt;`

ビデオも再生できますが、パフォーマンスの面でいくつかの問題に直面しています。

1) 時々音声が始まりますが、しばらくするとビデオが表示され始めます。

2) コントロールが表示されないことがあります。

3) ビデオをフルスクリーン モードで直接再生するにはどうすればよいですか?現在、ビデオをフルスクリーン モードで再生するには、最大コントロールをクリックして再生する必要があります。

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

        }

}

そしてマニフェストにも設定しましたhardwareaccelarated = true。これは、コントロールで開始するときのビデオです

ここで最大化ボタンをクリックすると、最大化ボタンをクリックせずにビデオがフルスクリーンになりますが、ビデオはフルスクリーンモードで直接再生する必要があります。

ここに画像の説明を入力

主に、どのようにスピードアップしてパフォーマンスを向上させることができWebViewますか?

4

0 に答える 0