Приостановить ExoPlayer из класса адаптера, когда пользователь уходит со страницы, на которой воспроизводится видео - PullRequest
0 голосов
/ 11 июля 2020

В моем классе адаптера я реализовал код для ExoPlayer, и он отлично работает. У меня есть вопрос: когда пользователь уходит со страницы с видео, я хочу, чтобы ExoPlayer останавливался автоматически. Не могу придумать, как это сделать.

Если они находятся на одной странице, но, например, просто прокручивают вниз, видео не должно останавливаться, но если они уйдут со страницы, на которой воспроизводится видео, видео должно быть приостановлено или остановлено.

И это мой класс адаптера, поэтому я не могу позвонить onPause() и onResume(), или это неправильно?

В другом моем действии, которое я использовал onPause(), и он работает нормально, но здесь я должен сделать это по-другому, верно?

Нужно ли мне вручную go писать код, чтобы приостанавливать видео с каждым щелчком, который уводит пользователя от экран с видео?

 public void setVideo(String videoUrl) {

            try {
                BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter.Builder(mContext).build();
                TrackSelector trackSelector = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(bandwidthMeter));
                mExoPlayer = ExoPlayerFactory.newSimpleInstance(mContext, trackSelector);
                Uri videoUri = Uri.parse(videoUrl);
                DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("posts");
                ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
                MediaSource mediaSource = new ExtractorMediaSource(videoUri, dataSourceFactory, extractorsFactory, null, null);
                mPlayerView.setPlayer(mExoPlayer);
                mExoPlayer.prepare(mediaSource);
                mExoPlayer.setPlayWhenReady(false);
            } catch (Exception e) {
                Log.e("ViewHolder", "ExoPlayer error: " + e.toString());
            }
        }

В моем EditVideoPostActivity я сделал так, что работает

@Override
    protected void onPause() {
        super.onPause();
        mExoPlayer.setPlayWhenReady(false);
        mExoPlayer.getPlaybackState();
    }

1 Ответ

0 голосов
/ 13 июля 2020

Вы не должны использовать другой экземпляр Exoplayer в своем классе адаптера, использовать Exoplayer из своей деятельности и обрабатывать жизненный цикл там, как вы это сделали. Чтобы воспроизвести видео после щелчка по элементу, вы должны использовать для обратного вызова своего действия и воспроизведения видео оттуда. В этом случае, поскольку ваш Exoplayer привязан к жизненному циклу вашей активности, когда пользователь переходит со страницы, проигрыватель остановится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...