视频无法在VideoView

时间:2017-12-12 10:26:21

标签: android android-mediaplayer android-videoview

有很多帖子可以解决这个问题。但是当活动暂停时,解决方案可用。我尝试了它所做的一切。我的问题有点不同

  

我有视频观看,当用户点击视频观看时,视频将暂停,如果再次点击,则应恢复视频。

我在ontouchlistener中的代码片段是,

   videopath = getIntent().getStringExtra("path");
    imageView = ((VideoView) findViewById(R.id.imageView));
    imageView.setVideoPath(videopath);
    imageView.start();
    imageView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction()==MotionEvent.ACTION_UP)
                if (layout.getVisibility()==View.VISIBLE) {
                    imageView.seekTo(stopPosition);
                    imageView.resume();
                    layout.animate().translationY(-layout.getHeight()).setDuration(500);
                    layout.setVisibility(View.GONE);
                    hideSystemUI();
                } else {
                    imageView.pause();
                    stopPosition=imageView.getCurrentPosition();
                    showSystemUI();
                    layout.setVisibility(View.VISIBLE);
                    layout.animate().translationYBy(layout.getHeight());
                }
            return true;
        }
    });

我从这个link得到了这个解决方案。它不起作用,只使用resume();也没有用。

1 个答案:

答案 0 :(得分:1)

这是因为您的设备丢失了您存储的时间。你可以使用MediaPlayer实例,在这里你可以使用,

    VideoView videoView;
    MediaPlayer mp;

    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    this.mp = mp;
                }
            });

    public void pause(){
        //NOT videoview.pause();
        if (mp != null){
           mp.pause();
        }
    }

    public void resume(){
        //NOT videoview.resume();
        if (mp != null){
           mp.start();
        }   
    }

//This function will be implemented under onClick method
if (!videoView.isPlaying()) {
                 resume();
                 layout.setVisibility(View.GONE);
                 hideSystemUI();//hiding navigationbar
} 
else {//initially layout visibility is GONE
                 pause();
                 stopPosition=videoView.getCurrentPosition();
                 showSystemUI();
                 layout.setVisibility(View.VISIBLE);
                 layout.animate().translationYBy(layout.getHeight());
}