package com.king.tv.mvp.fragment; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import com.king.base.util.LogUtils; import com.king.tv.R; import com.king.tv.mvp.base.BaseFragment; import com.king.tv.mvp.base.BasePresenter; import com.king.tv.mvp.base.BaseView; import com.king.tv.util.DensityUtil; import com.pili.pldroid.player.PLMediaPlayer; import com.pili.pldroid.player.widget.PLVideoTextureView; import com.pili.pldroid.player.widget.PLVideoView; import butterknife.BindView; /** * @author Jenly <a href="mailto:jenly1314@gmail.com">Jenly</a> * @since 2017/3/8 */ public class VideoFragment extends BaseFragment<BaseView, BasePresenter<BaseView>> { @BindView(R.id.vtv) PLVideoTextureView vtv; private int mRotation; private String url; private boolean isFull; public static VideoFragment newInstance(String url,boolean isFull) { Bundle args = new Bundle(); VideoFragment fragment = new VideoFragment(); fragment.url = url; fragment.isFull = isFull; fragment.setArguments(args); return fragment; } @Override public int getRootViewId() { return R.layout.fragment_video; } @Override public void initUI() { LogUtils.d("url:" + url); vtv.setVideoPath(url); if(isFull){ vtv.setDisplayOrientation(PLVideoView.ASPECT_RATIO_PAVED_PARENT); }else{ vtv.setDisplayOrientation(PLVideoView.ASPECT_RATIO_16_9); } vtv.setOnPreparedListener(new PLMediaPlayer.OnPreparedListener() { @Override public void onPrepared(PLMediaPlayer plMediaPlayer) { LogUtils.d("onPrepared:" + url); start(); } }); vtv.setOnBufferingUpdateListener(new PLMediaPlayer.OnBufferingUpdateListener() { @Override public void onBufferingUpdate(PLMediaPlayer plMediaPlayer, int i) { if(i>0) LogUtils.d("onBufferingUpdate|" + i); } }); vtv.setOnCompletionListener(new PLMediaPlayer.OnCompletionListener() { @Override public void onCompletion(PLMediaPlayer plMediaPlayer) { LogUtils.d("onCompletion"); } }); vtv.setOnInfoListener(new PLMediaPlayer.OnInfoListener() { @Override public boolean onInfo(PLMediaPlayer plMediaPlayer, int i, int i1) { LogUtils.d("onInfo|i:" + i + "--i1:" + i1); return false; } }); vtv.setOnErrorListener(new PLMediaPlayer.OnErrorListener() { @Override public boolean onError(PLMediaPlayer plMediaPlayer, int i) { LogUtils.w("onError:i:" + i); return false; } }); } public PLVideoTextureView getVideoView(){ return vtv; } public boolean isPlaying(){ return vtv.isPlaying(); } private void start(){ if(vtv!=null) vtv.start(); } public void pause(){ if(vtv!=null) vtv.pause(); } public void stopPlayback(){ if(vtv!=null) vtv.stopPlayback(); } public void seekTo(long i){ vtv.seekTo(i); } @Override public void onResume() { super.onResume(); start(); } @Override public void onPause() { super.onPause(); pause(); } public int getDisplayAspectRatio(){ return vtv.getDisplayAspectRatio(); } @Override public void onDestroy() { super.onDestroy(); stopPlayback(); } public void onClickRotate(View v) { mRotation = (vtv.getDisplayAspectRatio() + 90) % 360; setDisplayAspectRatio(mRotation); } /** * * @param ratio * PLVideoView.ASPECT_RATIO_ORIGIN * PLVideoView.ASPECT_RATIO_FIT_PARENT * PLVideoView.ASPECT_RATIO_PAVED_PARENT * PLVideoView.ASPECT_RATIO_16_9 * PLVideoView.ASPECT_RATIO_4_3 * */ public void setDisplayAspectRatio(int ratio){ vtv.setDisplayAspectRatio(ratio); } /** * * @param orientation * 0/90/180/270 */ public void setDisplayOrientation(int orientation){ vtv.setDisplayOrientation(orientation); } public void play(String url){ this.url = url; LogUtils.d("url:" + url); vtv.setVideoPath(url); vtv.start(); } @Override public void initData() { } @Override public BasePresenter createPresenter() { return new BasePresenter(getApp()); } }