3

我非常喜欢这个网站,因为我可以找到许多有用的解决方案,对我很有帮助,尤其是我是 android 编程的初学者,这是我的第一个问题,所以我希望能从这个伟大的社区中得到帮助。

问题:我在我的应用程序中播放视频,并在用户定向屏幕时以横向全屏播放,所以我想通过使用 seekTo() 和 getCurrentPosition() 让视频从同一点重新开始播放 - 但是视频播放的问题位置后很多秒我的意思是视频会寻找相同的时间点,但是当开始播放时它会增加很多秒。

我的代码:

    //initialise everything  
protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        v = (VideoView) findViewById(R.id.videoView1);
                v.setVideoPath(dir + videoName + ".3gp");
                v.setMediaController(new MediaController(this));
                if (savedInstanceState == null){
                    v.start();  
                }
                else {
                    playingTime = savedInstanceState.getInt("restartTime", 0);
                    v.seekTo(playingTime);
                }
       }

@Override
protected void onSaveInstanceState(Bundle outState) {
    // TODO Auto-generated method stub
    super.onSaveInstanceState(outState);
    if (file.exists()){
        playingTime = v.getCurrentPosition();
        v.stopPlayback();
        outState.putInt("restartTime", playingTime);
    }
}

我尝试了许多解决方案,例如 如何在更改为横向模式时继续播放视频 android

我正在使用 Galaxy Nexus 测试我的应用程序。如果有任何提示,我将不胜感激。对不起我的英语不好,非常感谢。

4

1 回答 1

5

在你的活动中,保持一切正常。它归结为在重新创建活动时保存位置。这是一种方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //initialise everything


    //finally
    if(savedInstanceState!=null) {
        int seekValue = savedInstanceState.getInt("where");
        //now seekTo(seekValue)
    }
}
@Override
    protected void onSaveInstanceState(Bundle outState) {
        int seekValue; //set this to the current position;
        outState.putInt("where", seekValue);
        super.onSaveInstanceState(outState);
    }
}
于 2012-09-22T17:49:15.323 回答