VideoView&全屏&方向更改-Android

7

我实现了一个带有嵌入式视频播放器的电子阅读器,我需要一个选项来从播放器中切换到全屏模式。

我的问题是:

最佳的方法是什么,可以在全屏模式下播放视频,并让用户返回之前阅读的页面,并保留当前视频的时间。

我需要处理另一种复杂的情况:

在纵向和横向上,页面有不同的可视化效果,如果用户在纵向上切换到全屏并旋转设备,则视频应该进入横向模式并重新调整视频以适合屏幕大小,但如果用户从此页面返回,则应再次返回纵向。

如果需要更多信息,我可以提供。

谢谢。

1个回答

9
我建议在布局中使用VideoViewActivity。您可以像这样在屏幕方向更改时保存位置。
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    if (mVideoView.isPlaying()) outState.putInt("pos", mVideoView.getCurrentPosition());
}

在onCreate方法中恢复位置并继续播放。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.video);

    mVideoView = (VideoView) findViewById(R.id.video);
    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(mVideoView);
    mVideoView.setMediaController(mediaController);
    mVideoView.setOnCompletionListener(this);

    Intent intent = getIntent();
    path = intent.getExtras().getString("path");

    int pos = 0;
    if (savedInstanceState != null) {
        pos = savedInstanceState.getInt("pos");
    }

    playVideoFromPos(pos);
}

1
实际上,最大的问题是从页面中移除旧的Videoview并保持其状态在方向更改时一致。(不重新创建后台活动) - Marcos Vasconcelos
好的,我们已经得到了mVideoView.getCurrentPosition(),那么如何将其设置为videoview的值呢?主要问题是获取视频播放了多长时间并将其设置。 - Tofeeq Ahmad
2
mVideoView.getCurrentPosition() 可以获取视频已播放的时间,你可以将其保存到 outState 中。然后在 onCreate 方法中,检查是否有保存的时间。在 playVideoFromPos(int pos) 方法中,你可以调用 mVideoView.seekTo(pos);mVideoView.start(); 来实现所需功能。 - vasart
3
我认为它会再次重新缓冲。 - Kalpesh Lakhani
如何编写适配器类?我正在使用Firebase Recycler Adapter,请帮帮我。 - Security Coding

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接