SwitchVideoByIdActivity.java 4.33 KB
package com.cnlive.demo.video;

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

import com.cnlive.demo.video.model.DataSource;
import com.cnlive.libs.util.Config;
import com.cnlive.libs.video.video.SwitchVideoView;
import com.cnlive.libs.video.video.base.IDataSource;
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 SwitchVideoByIdActivity 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<IDataSource> videoIdUrls;

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

    public List<IDataSource> getVideoIdList() {
        List<IDataSource> videoList = new ArrayList<>();
        videoList.add(new DataSource("20161126", Config.TYPE_VOD, Config.TYPE_PLAY_RATE_2));
        videoList.add(new DataSource("20161126", Config.TYPE_VOD, Config.TYPE_PLAY_RATE_2));
        videoList.add(new DataSource("20161126", Config.TYPE_VOD, Config.TYPE_PLAY_RATE_2));
        videoList.add(new DataSource("20161126", Config.TYPE_VOD, Config.TYPE_PLAY_RATE_2));
        videoList.add(new DataSource("20161126", Config.TYPE_VOD, Config.TYPE_PLAY_RATE_2));
        return videoList;
    }

    private void startPlayId(List<IDataSource> videoList) {
        videoIdUrls = videoList;
        curVideoIndex = 0;
        videoView.setDataSource(getNextVideoId());
        videoView.switchVideo(getNextVideoId());
    }

    private IDataSource getNextVideoId() {
        if (curVideoIndex >= videoIdUrls.size()) return null;
        return videoIdUrls.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(getNextVideoId());
        }
    }

    @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) {

    }

}