我有一个播放视频的简单活动。
uriStr = ("http://pathToVideo.com/video/" + yyyyMdd_Str + "/" + yyyyMdd_Str + ".mp4");
VideoView testVideo1_VV =(VideoView) findViewById(R.id.videoTest7vid_VV);
testMediaCon1_MC = new MediaController(this);
testMediaCon1_MC.setAnchorView(testVideo1_VV);
testVideo1_VV.setMediaController(testMediaCon1_MC);
testVideo1_VV.setKeepScreenOn(true);
testVideo1_VV.setVideoPath(uriStr);
testVideo1_VV.requestFocus();
testVideo1_VV.start();
在纵向布局中,视频与顶部对齐,使其在屏幕的前三分之一处播放,在横向布局中,视频通过在高度和宽度上包装内容来全屏显示。在Manifest中我设置了android:configChanges="orientation"
,以便Activity不会在方向更改时刷新。但我的问题是布局不会随着方向的改变而改变。如何在方向更改时保持视频播放,还可以在方向更改时显示正确的布局?
所以现在我认为解决方案是在播放时记录视频的位置,然后使用savedInstanceState
检索视频状态,并在方向更改时从该点开始播放视频。像这样:
@Override
protected void onSaveInstanceState(Bundle out) {
super.onSaveInstanceState(out);
//video state would go here
}
@Override
protected void onRestoreInstanceState(Bundle in) {
super.onRestoreInstanceState(in);
//video state would go here
}
但现在我不知道获取视频状态的代码......
答案 0 :(得分:1)
当您设置android:configChanges="orientation"
时,您明确告诉Android操作系统,您将自行处理方向更改,包括根据需要切换布局等,因此您需要在活动中实施onConfigurationChanged()
并处理任何更改你想在那里做。
另外值得注意的是android:configChanges="orientation"
只关注景观 - >肖像改变,而不是肖像到风景。尝试将orientation
更改为orientation|keyboardHidden
以处理这两种情况。
答案 1 :(得分:0)
Android: alternate layout xml for landscape mode根据方向设置不同的布局。
你需要一些方法来为视频中确切的点添加书签,其中定位时间发生了。