我的第一个活动有一个外星播放器,当我点击全屏按钮时,我全屏打开一个新的视频活动。我只是发送我当前的位置,然后启动该位置的视频活动。
TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(context, trackSelector);
playerView.setPlayer(player);
player.prepare(contentMediaSource);
player.setPlayWhenReady(true);
player.seekTo(positionFromFirstActivity);
但问题是当打开新活动并从当前位置启动 exoplayer 时。Exoplayer再次启动缓冲。
有没有办法将缓冲数据携带到第二活动。
回答这个问题可能为时已晚,但这可能有助于其他人。
如果你想为exoplayer实现全屏功能,不要通过单独的活动来完成,你只需要打开一个对话框,其中有高度和宽度对整个屏幕进行数学运算,只需要添加你用于"无全屏"exoplier的播放器视图。
mFullScreenButton.setOnClickListener(v -> {
if (!mExoPlayerFullscreen) {
((Activity) mContext).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
openFullscreenDialog();
} else {
((Activity) mContext).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
closeFullscreenDialog();
}
});
在这里,我们正在初始化"点击全屏"按钮
private void openFullscreenDialog() {
((ViewGroup) playerView.getParent()).removeView(playerView);
mFullScreenDialog.addContentView(playerView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
mFullScreenIcon.setImageResource(R.drawable.ic_exit_fullscreen);
mExoPlayerFullscreen = true;
mFullScreenDialog.show();
}
以上是调用全屏按钮以匹配屏幕时调用的方法。以下是撤消全屏的方法。
private void closeFullscreenDialog() {
((ViewGroup) playerView.getParent()).removeView(playerView);
((FrameLayout) findViewById(R.id.main_media_frame)).addView(playerView);
mExoPlayerFullscreen = false;
mFullScreenDialog.dismiss();
mFullScreenIcon.setImageResource(R.drawable.ic_fullscreen);
}
下面是用于初始化对话框的代码片段。
mFullScreenDialog = new Dialog(mContext, android.R.style.Theme_Black_NoTitleBar_Fullscreen) {
public void onBackPressed() {
if (mExoPlayerFullscreen) {
closeFullscreenDialog();
}
super.onBackPressed();
}
};
实际上是不可能的。但是我设法实现的一种解决方法是将播放器视图的宽度和高度更改为MATCH_PARENT
当您想全屏播放它时(即使在配置更改中(。如何使用 exoplayer 在横向全屏播放视频 这可以帮助您。