android - 我可以将 exoplayer 缓冲数据发送到其他 Activity exoplayer

标签 android video-streaming exoplayer exoplayer2.x

我有一个 exoplayer 我的第一个 Activity ,当我点击全屏按钮时,我打开一个新的 VideoActivity 全屏。我只发送我当前的位置并在该位置启动 VideoActivity。

  TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
  SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(context, trackSelector);

  playerView.setPlayer(player);
  player.prepare(contentMediaSource);
  player.setPlayWhenReady(true);
  player.seekTo(positionFromFirstActivity);

但问题是何时打开新 Activity 并从当前位置启动 exoplayer。 Exoplayer 再次开始缓冲。

有什么办法可以把缓冲数据携带到SecondActivity。

最佳答案

现在回答这个问题可能为时已晚,但这可能会帮助其他人。

如果你想为 exoplayer 实现全屏功能,不要通过单独的 Activity 来实现,你只需要打开一个对话框,在整个屏幕上进行高度和宽度数学运算,只需要添加你正在使用的播放器 View 对于“非全屏”exoplyer。

mFullScreenButton.setOnClickListener(v -> {
        if (!mExoPlayerFullscreen) {
            ((Activity) mContext).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
            openFullscreenDialog();
        } else {
            ((Activity) mContext).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
            closeFullscreenDialog();
        }
    });

这里我们为全屏按钮初始化 onClick

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);
}

下面是初始化对话框的代码 fragment 。

mFullScreenDialog = new Dialog(mContext, android.R.style.Theme_Black_NoTitleBar_Fullscreen) {
        public void onBackPressed() {
            if (mExoPlayerFullscreen) {
                closeFullscreenDialog();
            }
            super.onBackPressed();
        }
    };

关于android - 我可以将 exoplayer 缓冲数据发送到其他 Activity exoplayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52538973/

相关文章:

exoplayer - 从后台线程还是从主 ui 线程使用 exoplayer 更好?

java - 如何修复错误 "Can' 无法播放此视频”?(m3u8) 文件

android - 使用 API 7 Android 在 WebView 中禁用缩放控制

安卓NDK : UnsatisfiedLinkError when using OpenAL shared library

video-streaming - 使用 smil 文件更改 JW Player 中的名称质量

Java 实时视频捕获/流式传输

android - 在ExoPlayer中复制音频ByteBuffer

android - 如何为坦桑尼亚集成国家身份验证机构 (NIDA) API?

android - 使用 FirebaseRecyclerAdapter 进行 Firebase 搜索 (Firebase UI 3.2.2)

video - HTML5 视频自动播放无法正常工作