web-dev-qa-db-ja.com

ExoplayerとProgressBar

私はAndroid= StudioおよびExoPlayerを初めて使用しました。ビデオを再生するためにプレーヤーを開始しましたが、プレーヤーがバッファリングしているかどうかを検出し、ユーザーに通知するために進行状況バーを表示しますお願いします?

9
Omar Alesharie

_ExoPlayer.EventListener_を実装し、onPlayerStateChanged()をオーバーライドして、ビデオの進行状況を検出する必要があります(_STATE_IDLE, STATE_BUFFERING, STATE_READY, STATE_ENDED)_

7
Louis Nguyen

レイアウトファイル内:

<ProgressBar
        Android:id="@+id/progress_bar"
        Android:layout_width="48dp"
        Android:layout_height="48dp"
        Android:layout_gravity="center"/>

プレーヤーのアクティビティ:

player.addListener(new ExoPlayer.EventListener() {
            @Override
            public void onTimelineChanged(Timeline timeline, Object manifest) {}

            @Override
            public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {}

            @Override
            public void onLoadingChanged(boolean isLoading) {}

            @Override
            public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
                if (playbackState == ExoPlayer.STATE_BUFFERING){
                    progressBar.setVisibility(View.VISIBLE);
                } else {
                    progressBar.setVisibility(View.INVISIBLE);
                }
            }

            @Override
            public void onPlayerError(ExoPlaybackException error) {}

            @Override
            public void onPositionDiscontinuity() {}

            @Override
            public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) {}
        });
13
Firoz Ahmed

多分それは誰かに役立つでしょう:

_<com.google.Android.exoplayer2.ui.PlayerView
        Android:id="@+id/player_view"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:background="@Android:color/black"
        app:show_buffering="true"/>
_

exoplayer2を使用している場合は、XML属性show_bufferingを変更するだけです。

詳細については PlayerView.setShowBuffering(PlayerView.ShowBuffering) もご覧ください。

12
remain4life

他人の答えを見て、こうやってやった。 ExoPlayerバージョン2.7.0を使用しました。

private Player.EventListener eventListener = new Player.EventListener() {

    @Override
    public void onTimelineChanged(Timeline timeline, Object manifest, int reason) {

    }

    @Override
    public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {
        //Log.i(TAG,"onTracksChanged");
    }

    @Override
    public void onLoadingChanged(boolean isLoading) {
        //Log.i(TAG,"onLoadingChanged");
    }

    @Override
    public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
        switch (playbackState) {
            case Player.STATE_ENDED:
                Log.i("EventListenerState", "Playback ended!");
                exoPlayer.setPlayWhenReady(false);
                break;
            case Player.STATE_READY:
                Log.i("EventListenerState", "Playback State Ready!");

                hideProgressBar();
                break;
            case Player.STATE_BUFFERING:
                Log.i("EventListenerState", "Playback buffering");
                showProgressBar();

                break;
            case Player.STATE_IDLE:

                break;

        }
    }

    @Override
    public void onRepeatModeChanged(int repeatMode) {

    }

    @Override
    public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) {

    }

    @Override
    public void onPlayerError(ExoPlaybackException error) {

    }

    @Override
    public void onPositionDiscontinuity(int reason) {

    }

    @Override
    public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) {

    }

    @Override
    public void onSeekProcessed() {

    }
};
1
Harry .Naeem

mPlayer.addListener(eventListener);

        Player.EventListener eventListener = new Player.EventListener() {
        @Override
        public void onTimelineChanged(Timeline timeline, Object manifest, int reason) {

        }

        @Override
        public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {

        }

        @Override
        public void onLoadingChanged(boolean isLoading) {

        }

        @Override
        public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
            switch (playbackState) {
                case Player.STATE_ENDED:
                    Log.i("EventListenerState", "Playback ended!");
                    finish();
                    break;
            }
        }

        @Override
        public void onRepeatModeChanged(int repeatMode) {

        }

        @Override
        public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) {

        }

        @Override
        public void onPlayerError(ExoPlaybackException error) {

        }

        @Override
        public void onPositionDiscontinuity(int reason) {

        }

        @Override
        public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) {

        }

        @Override
        public void onSeekProcessed() {

        }
    };
0
Ardit Zeza