Exoplayer - 如何只播放 FragmentStatePagerAdapter 中可见的当前屏幕?
Exoplayer - How to play only the current screen visible in FragmentStatePagerAdapter?
我正在将 FragmentStatePagerAdapter 与 Exoplayer 一起使用。我的主要目标是加载下一页,但不要播放该页面中的视频。现在在 viewpager 的 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 上的文档:
The player is able to immediately play from its current position. The
player will be playing if getPlayWhenReady() is true, and paused
otherwise.
此外,您应该设置 PageChangeListener
或 PageChangeCallback
(取决于您使用的 ViewPager
版本)以监控 ViewPager
中的哪个页面是当前选择,哪些不是。对于选中的页面,可以设置其对应的exoplayer实例播放player.setPlayWhenReady(true)
的视频。在每个片段的 onPause(...)
生命周期方法中暂停播放器也是一个好主意。
我正在将 FragmentStatePagerAdapter 与 Exoplayer 一起使用。我的主要目标是加载下一页,但不要播放该页面中的视频。现在在 viewpager 的 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 上的文档:
The player is able to immediately play from its current position. The player will be playing if getPlayWhenReady() is true, and paused otherwise.
此外,您应该设置 PageChangeListener
或 PageChangeCallback
(取决于您使用的 ViewPager
版本)以监控 ViewPager
中的哪个页面是当前选择,哪些不是。对于选中的页面,可以设置其对应的exoplayer实例播放player.setPlayWhenReady(true)
的视频。在每个片段的 onPause(...)
生命周期方法中暂停播放器也是一个好主意。