WebView and HTML5

It is possible to view a video element (video html5 tag) within a WebView, but I must say I had to deal with it for few days. These are the steps I had to follow so far:

  • Find a properly encoded video

  • When initializing the WebView, set the JavaScript, Plug-ins the WebViewClient and the WebChromeClient.

    url = new String("http://broken-links.com/tests/video/"); 
    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.setWebChromeClient(chromeClient);
    mWebView.setWebViewClient(wvClient);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setPluginState(PluginState.ON);
    mWebView.loadUrl(url);
    
  • Handle the onShowCustomView in the WebChromeClient object.

    @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();
            }
        }
    }
    
  • Handle the onCompletion and the onError events for the video, in order to get back to the web view.

    public void onCompletion(MediaPlayer mp) {
        Log.d(TAG, "Video completo");
        a.setContentView(R.layout.main);
        WebView wb = (WebView) a.findViewById(R.id.webview);
        a.initWebView();
    }
    

But now I should say there are still an important issue. I can play it only once. The second time I click on the video dispatcher (either the poster or some play button), it does nothing.

I would also like the video to play inside the WebView frame, instead of opening the Media Player window, but this is for me a secondary issue.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)