有很多帖子可以解决这个问题。但是当活动暂停时,解决方案可用。我尝试了它所做的一切。我的问题有点不同
我有视频观看,当用户点击视频观看时,视频将暂停,如果再次点击,则应恢复视频。
我在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();也没有用。
答案 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());
}