exoplay切换全屏_通过 IJKEXOPLAYER2 播放视频 横竖屏切换 黑屏 播放错误

这是一个自定义的`SampleGSYVideo`全屏视频播放器,实现了横竖屏切换、视频加载错误处理、封面加载等功能。通过`GSYVideoOptionBuilder`配置播放选项,如自动全屏、暂停时显示封面、错误处理等,并在进入和退出全屏时调整UI。
摘要由CSDN通过智能技术生成

public class SampleGSYVideo extends StandardGSYVideoPlayer implements GSYVideoProgressListener {

public SelectableRoundedImageView mCoverImage;

private TextView mTvHint;

private LottieAnimationView mLoadingView;

public ImageView mIvStartButton;

private SoybeanContentInfoPlus mData;

private boolean isUploadValidPlay;//视频是否上传过

private String mDomain;

public String getDomain() {

return mDomain;

}

public void setDomain(String domain) {

this.mDomain = domain;

}

//亮度文本

protected ProgressBar mBrightnessDialogProgressBar;

public SampleGSYVideo(Context context, Boolean fullFlag) {

super(context, fullFlag);

}

public SampleGSYVideo(Context context) {

super(context);

}

public SampleGSYVideo(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

protected void init(Context context) {

super.init(context);

mCoverImage = findViewById(R.id.thumbImage);

mTvHint = findViewById(R.id.tv_flow_hint);

mLoadingView = findViewById(R.id.lottie_loading);

mIvStartButton = findViewById(R.id.iv_start);

mLoadingView.setAnimation("anim/soybean_anim_video_loading.json");

if (mThumbImageViewLayout != null &&

(mCurrentState == -1 || mCurrentState == CURRENT_STATE_NORMAL || mCurrentState == CURRENT_STATE_ERROR)) {

mThumbImageViewLayout.setVisibility(VISIBLE);

}

setGSYVideoProgressListener(this);

}

@Override

public void onInfo(int what, int extra) {

if (what == MediaPlayer.MEDIA_INFO_BUFFERING_START) {

mBackUpPlayingBufferState = mCurrentState;

//避免在onPrepared之前就进入了buffering,导致一只loading

if (mHadPlay && mCurrentState != CURRENT_STATE_PREPAREING && mCurrentState > 0)

setStateAndUi(CURRENT_STATE_PLAYING_BUFFERING_START);

} else if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END) {

if (mBackUpPlayingBufferState != -1) {

if (mBackUpPlayingBufferState == CURRENT_STATE_PLAYING_BUFFERING_START) {

mBackUpPlayingBufferState = CURRENT_STATE_PLAYING;

}

if (mHadPlay && mCurrentState != CURRENT_STATE_PREPAREING && mCurrentState > 0)

setStateAndUi(mBackUpPlayingBufferState);

mBackUpPlayingBufferState = -1;

}

} else if (what == IMediaPlayer.MEDIA_INFO_VIDEO_ROTATION_CHANGED) {

mRotate = extra;

Debuger.printfLog("Video Rotate Info " + extra);

if (mTextureView != null)

mTextureView.setRotation(mRotate);

}

}

public void loadCoverImage() {

RequestOptions options = new RequestOptions().placeholder(R.drawable.qy_drawable_radius_cover_default)

.error(R.drawable.qy_drawable_radius_cover_default);

if (null != mData) {

String cover = mData.getCover();

cover = String.format("%s%s", getDomain(), cover);

Glide.with(mContext).load(cover).apply(options).into(mCoverImage);

} else {

Glide.with(mContext)

.load(R.drawable.qy_drawable_radius_cover_default)

.into(mCoverImage);

}

}

public SoybeanContentInfoPlus getData() {

return mData;

}

public SampleGSYVideo setData(SoybeanContentInfoPlus mData) {

this.mData = mData;

return this;

}

public void setUploadValidPlay(boo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值