停止或取消准备好的VideoView

时间:2015-07-27 10:57:06

标签: android android-mediaplayer android-videoview

在我的示例中,我有一个视频链接列表和下一个上一个按钮。当我点击下一个列表中的下一个视频时播放。我的问题是当我点击下一个hVideoview.setVideoURI(Uri.parse(videoPath));被叫时,需要一些时间来准备。所以在这个持续时间内,如果我再次点击下一个视频链接被调用。同时,如果之前的视频已准备就绪,则会OnPreparedListener()执行并启动较旧的视频。我想要做的是当我点击下一步之前所有操作应该停止。 这是我的代码

public void initializeVideo(final String videoPath)
{
    BaseActivity.ShowLoading(this, "Buffering...");

    hVideoview.setVisibility(View.VISIBLE);
    lin_webview.setVisibility(View.GONE);

    new Handler(Looper.myLooper()).post(new Runnable(){
        @Override
        public void run(){
            hVideoview.setVideoURI(Uri.parse(videoPath));
        }
    });

    hVideoview.setOnPreparedListener(new OnPreparedListener() 
    {
        public void onPrepared(MediaPlayer mp)
        {
            mp.setOnBufferingUpdateListener(HighlightsActivity.this);
            mp.setOnCompletionListener(HighlightsActivity.this);

            BaseActivity.StopLoadingDialog();
            hVideoview.requestFocus();
            hVideoview.start();
            mediaFileLengthInMilliseconds = hVideoview.getDuration();
            seek_bar.setMax(mediaFileLengthInMilliseconds);
            primarySeekBarProgressUpdater();
            imgPlay.setVisibility(View.GONE);
            imgPause.setVisibility(View.VISIBLE);
        }
    });
}

那么有没有办法阻止OnPreparedListener()被执行?

1 个答案:

答案 0 :(得分:0)

initializeVideo方法中,在setVideoURI

之前添加此内容
if (hVideoview.isPlaying()) {
    hVideoview.stopPlayback();
}