Видео воспроизводится только один раз в Webview Android - PullRequest
6 голосов
/ 29 ноября 2011

Мне удалось воспроизвести потоковое видео Youtube из контента HTML5 в Webview в Android, но теперь проблема в том, что видео воспроизводится только в первый раз.После этого VideoView идет только в конец видеофайла.

Я попытался очистить кеш, как предлагалось здесь , но не повезло.

Что может быть возможным решением этой проблемы?

Пожалуйста, попробуйте следующий код длязапустить видео, он использует некоторые предложения, приведенные на stackoverflow.com

WebView webView = (WebView) findViewById(R.id.product_details_webview);
WebSettings webSettings = webView.getSettings();
webSettings.setPluginState(WebSettings.PluginState.ON);
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webView.setWebChromeClient(new chromeClient());
webView.setWebViewClient(new WebViewClient(){

});
webView.loadUrl(url);

public class chromeClient extends WebChromeClient implements OnCompletionListener,  
OnErrorListener{
    private WebView wv;
    private VideoView mVideoView;
    private LinearLayout mContentView;
    private FrameLayout mCustomViewContainer;
    private WebChromeClient.CustomViewCallback mCustomViewCallback;
    FrameLayout.LayoutParams COVER_SCREEN_GRAVITY_CENTER = new   
FrameLayout.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER);

    @Override
    public void onShowCustomView(View view, CustomViewCallback callback) {
        if (view instanceof FrameLayout) {
            wv = (WebView)findViewById(R.id.product_details_webview);
            mCustomViewContainer = (FrameLayout) view;
            mCustomViewCallback = callback;
            mContentView = (LinearLayout)findViewById(R.id.linearlayout1);
            if (mCustomViewContainer.getFocusedChild() instanceof VideoView) {
                mVideoView = (VideoView) mCustomViewContainer.getFocusedChild();
                // frame.removeView(video);
                mContentView.setVisibility(View.GONE);
                mCustomViewContainer.setVisibility(View.VISIBLE);
                setContentView(mCustomViewContainer);
                mVideoView.setOnCompletionListener(this);
                mVideoView.setOnErrorListener(this);
                mVideoView.start();

            }
        }
    }

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


    public void onCompletion(MediaPlayer mp) {
        mp.stop();
        mCustomViewContainer.setVisibility(View.GONE);
        onHideCustomView();
        setContentView(mContentView);
    }

    public boolean onError(MediaPlayer arg0, int arg1, int arg2) {
        setContentView(mContentView);
        return true;
    }
  }

Ответы [ 3 ]

4 голосов
/ 28 февраля 2012

Добавьте в свой клиент Chrome:

        @Override public void onPrepared(MediaPlayer mp) {

        customViewCallback.onCustomViewHidden();
    }

где customViewCallback = обратный вызов;

1 голос
/ 29 ноября 2011

У вас есть видео, работающее внутри WebView с HTML5?Congrats!Я не смог сделать это: (

Чтобы исправить мою проблему, я оставил заполнитель в HTML и обработал видео из собственного кода, используя класс MediaPlayer .

0 голосов
/ 21 августа 2013

У меня тоже была эта проблема.Я должен был добавить поиск (0).Похоже, следующее видео воспроизводится именно с того места, где закончилось последнее видео.Поэтому мне пришлось перейти к началу видео перед воспроизведением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...