我正在使用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(( 为真并暂停,则播放器将播放 否则。
此外,您应该设置PageChangeListener
或PageChangeCallback
(取决于您使用的ViewPager
版本(来监视当前选择了ViewPager
中的哪个页面,哪些未选中。对于所选页面,您可以设置其对应的 exoplayer 实例以播放带有player.setPlayWhenReady(true)
的视频。在每个片段的onPause(...)
生命周期方法中暂停播放器也是一个好主意。