Exoplayer语言 - 如何只播放FragmentStatePagerAdapter中可见的当前屏幕?



我正在使用FragmentStatePagerAdapter和Exoplayer。我的主要目标是加载下一页,但是不要在该页面中播放视频。现在在我的视频片段中,我正在里面播放视频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(( 为真并暂停,则播放器将播放 否则。

此外,您应该设置PageChangeListenerPageChangeCallback(取决于您使用的ViewPager版本(来监视当前选择了ViewPager中的哪个页面,哪些未选中。对于所选页面,您可以设置其对应的 exoplayer 实例以播放带有player.setPlayWhenReady(true)的视频。在每个片段的onPause(...)生命周期方法中暂停播放器也是一个好主意。

最新更新