SwitchVideoByPathActivity.java 4.08 KB
package com.cnlive.demo.video;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

import com.cnlive.libs.video.video.SwitchVideoView;
import com.cnlive.libs.video.video.base.IMediaPlayer;
import com.cnlive.libs.video.video.base.ISwitchVideoView;

import java.util.ArrayList;
import java.util.List;

public class SwitchVideoByPathActivity extends AppCompatActivity implements IMediaPlayer.OnPreparedListener,
        IMediaPlayer.OnCompletionListener, IMediaPlayer.OnErrorListener, IMediaPlayer.OnInfoListener,
        IMediaPlayer.OnPlayStateListener, IMediaPlayer.OnSeekCompleteListener,
        ISwitchVideoView.OnSwitchVideoPreparedListener, ISwitchVideoView.OnSwitchVideoErrorListener {

    private SwitchVideoView videoView;

    private int curVideoIndex = 0;
    private List<String> videoUrls;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_switch_video);
        initPlay();
        startPlay(getVideoList());
    }

    public List<String> getVideoList() {
        List<String> videoList = new ArrayList<>();
        videoList.add("https://mobile.cnlive.com/CnliveMobile/web/7.mp4");
        videoList.add("https://mobile.cnlive.com/CnliveMobile/web/7.mp4");
        videoList.add("https://mobile.cnlive.com/CnliveMobile/web/7.mp4");
        videoList.add("https://mobile.cnlive.com/CnliveMobile/web/7.mp4");
        videoList.add("https://mobile.cnlive.com/CnliveMobile/web/7.mp4");
        return videoList;
    }

    private void startPlay(List<String> videoList) {
        videoUrls = videoList;
        curVideoIndex = 0;
        videoView.setDataSource(getNextVideoPath());
        videoView.switchVideo(getNextVideoPath());
    }

    private String getNextVideoPath() {
        if (curVideoIndex >= videoUrls.size()) return null;
        return videoUrls.get(curVideoIndex++);
    }

    private void initPlay() {
        videoView = (SwitchVideoView) findViewById(R.id.videoview);
        //认证APP播放权限(使用视讯中国资源)
        videoView.setOnPreparedListener(this);
        videoView.setOnCompletionListener(this);
        videoView.setOnPlayStateListener(this);
        videoView.setOnErrorListener(this);
        videoView.setOnInfoListener(this);
        videoView.setOnSeekCompleteListener(this);
        videoView.setOnSwitchVideoPreparedListener(this);
        videoView.setOnSwitchVideoErrorListener(this);
        videoView.setKeepScreenOn(true);
    }

    private void playComplete() {
        //播放完成 (视频结束或错误结束都会被触发)
    }

    @Override
    protected void onPause() {
        super.onPause();
        videoView.pause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        videoView.start();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        videoView.release();
    }

    @Override
    public void onCompletion(IMediaPlayer iMediaPlayer) {
        boolean isLastMedia =
                videoView.getSwitchMediaPlayer() == null || iMediaPlayer.equals(videoView.getSwitchMediaPlayer());
        if (isLastMedia) {
            playComplete();
        } else {
            videoView.switchVideoStart();
            videoView.switchVideo(getNextVideoPath());
        }
    }

    @Override
    public boolean onError(IMediaPlayer iMediaPlayer, int i, int i1) {
        videoView.releaseSwitchVideo();
        return false;
    }

    @Override
    public boolean onInfo(IMediaPlayer iMediaPlayer, int i, int i1) {
        return false;
    }

    @Override
    public void onPlayState(boolean b) {

    }

    @Override
    public void onPrepared(IMediaPlayer iMediaPlayer) {
        iMediaPlayer.start();
    }

    @Override
    public void onSeekComplete(IMediaPlayer iMediaPlayer) {

    }

    @Override
    public void onSwitchVideoError(IMediaPlayer iMediaPlayer, int i, int i1) {
        videoView.releaseSwitchVideo();
    }

    @Override
    public void onSwitchVideoPrepared(IMediaPlayer iMediaPlayer) {

    }

}