我正在Exoplayer中使用FragmentStatePagerAdapter。我的主要目标是加载下一页,但是不要在该页面上播放视频。现在在我的ViewFragmentr的VideoFragment中,我正在其中播放视频onCreateView
player = new SimpleExoPlayer.Builder(mContext).build();
player.setPlayWhenReady(true);
player.setRepeatMode(Player.REPEAT_MODE_ONE);
playerView.setPlayer(player);
addListenerToPlayer();
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(mContext,
Util.getUserAgent(mContext, "yourApplicationName"));
Uri uri = Uri.parse(mUrl);
MediaSource videoSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
player.prepare(videoSource);
如何设置我的exoplayer和适配器,使其仅播放当前屏幕?
在您的初始配置中用player.setPlayWhenReady(true);
替换player.setPlayWhenReady(false);
,因为它指示播放器实例在准备好播放后立即播放媒体。
根据Player.STATE_READY上的文档:
播放器可以立即从当前位置播放。的如果getPlayWhenReady()为true,则播放器将播放,并已暂停否则。
此外,您应该设置PageChangeListener
或PageChangeCallback
(取决于您使用的是ViewPager
的版本),以监视ViewPager
中当前选择的页面,而不选择哪个页面。对于所选页面,您可以设置其相应的exoplayer实例以使用player.setPlayWhenReady(true)
播放视频。在片段的每个onPause(...)
生命周期方法中暂停播放器也是一个好主意。