在这里插入代码片
给播放器绑定activity的生命周期,
在所在的activity中 初始化写入
getLifecycle().addObserver(binding.myVideoPlayer);
然后在MyVideoPlayer 类中添加
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import com.jkkc.my_jiaozi.CustomMedia.JZMediaIjk;
import cn.jzvd.JZUtils;
import cn.jzvd.Jzvd;
import cn.jzvd.JzvdStd;
public class MyVideoPlayer extends JzvdStd implements LifecycleObserver {
public MyVideoPlayer(Context context) {
super(context);
}
public MyVideoPlayer(Context context, AttributeSet attrs) {
super(context, attrs);
}
boolean isPortrait = false;
String path = "";
String title = "";
JZMediaIjk jzMediaIjk;
Call call;
public void setPortrait(boolean portrait) {
isPortrait = portrait;
}
public void setCall(Call call) {
this.call = call;
}
public void setPathAndTitle(String videoPath, String title) {
this.path = videoPath;
this.title = title;
if (videoPath.contains("Single")) {
setPortrait(true);
}
init();
}
private void init() {
// findViewById(R.id.fullscreen).setVisibility(GONE);
if (isPortrait) {
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) posterImageView.getLayoutParams();
layoutParams.height = RelativeLayout.LayoutParams.WRAP_CONTENT;
posterImageView.setLayoutParams(layoutParams);
}
this.setUp(path, title);
this.setMediaInterface(JZMediaIjk.class);
Jzvd.setVideoImageDisplayType(Jzvd.VIDEO_IMAGE_DISPLAY_TYPE_ADAPTER);
jzMediaIjk = new JZMediaIjk(this);
// seekToPosition(0);
}
public void setFullscreenVisible (int visible) {
findViewById(R.id.fullscreen).setVisibility(visible);
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void onBackPressed() {
if (Jzvd.backPress()) {
return;
}
}
@Override
public void onStatePlaying() {
super.onStatePlaying();
if (isPortrait) {
if (call != null) {
call.onStatePlaying();
}
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) posterImageView.getLayoutParams();
layoutParams.height = RelativeLayout.LayoutParams.WRAP_CONTENT;
posterImageView.setLayoutParams(layoutParams);
}
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
protected void onPause() {
seekToPosition(0);
Jzvd.releaseAllVideos();
}
public void seekToPosition(long position) {
if (this.mediaInterface != null && this.state < Jzvd.STATE_AUTO_COMPLETE) {
this.mediaInterface.seekTo(position);
}
}
//结束后显示最后一帧
@Override
public void onCompletion() {
super.onCompletion();
posterImageView.setVisibility(View.GONE);
}
@Override
public void onProgress(int progress, long position, long duration) {
super.onProgress(progress, position, duration);
}
public interface Call {
void onStatePlaying () ;
}
}