更改屏幕方向时,视频不会同时播放

时间:2012-09-22 17:36:50

标签: android landscape android-videoview

我非常喜欢这个网站,因为我能找到许多有用的解决方案对我非常有帮助,特别是我是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);
    }
}

我尝试了很多像这样的解决方案 How to keep playing video while changing to landscape mode android

我正在使用Galaxy Nexus测试我的应用程序..我会感激任何提示。 抱歉我的英语不好,非常感谢。

1 个答案:

答案 0 :(得分: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);
    }
}