Могу ли я отправить данные из буфера exoplayer в другой exoplayer активности - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть первый пользователь exoplayer, и когда я нажимаю кнопку полного экрана, я открываю новый полноэкранный режим 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);

Но проблема в том, когда открывают новое действие и запускают exoplayer из текущей позиции.Exoplayer снова начинает буферизацию.

Есть ли способ перенести данные буферизации в SecondActivity.

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Это может быть слишком поздно, чтобы ответить на этот вопрос, но это может помочь другим людям.

Если вы хотите реализовать полноэкранную функциональность для exoplayer, не выполняйте это через отдельное действие, вам просто нужнооткройте диалоговое окно с высотой и шириной, объединяя весь экран, и вам просто нужно добавить вид игрока, который вы использовали для 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);
}

Ниже приведен фрагмент кода для инициализации диалога.

mFullScreenDialog = new Dialog(mContext, android.R.style.Theme_Black_NoTitleBar_Fullscreen) {
        public void onBackPressed() {
            if (mExoPlayerFullscreen) {
                closeFullscreenDialog();
            }
            super.onBackPressed();
        }
    };
0 голосов
/ 14 января 2019

Это не возможно на самом деле.Но один из обходных путей, которого мне удалось достичь, - это изменить ширину и высоту вида проигрывателя на MATCH_PARENT, если вы хотите воспроизвести его в полноэкранном режиме (даже при изменениях конфигурации). Как воспроизводить видео в полноэкранном режиме в альбомной ориентации, используя exoplayer Это может помочь вам.

...