提交 ba8f6a03 authored 作者: kongdywang's avatar kongdywang

超级播放器增加disableGesture() setLoop() setStartTime() setIsAutoPlay() 方法的实现

上级 699bb8cb
package com.example.super_player;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
......@@ -12,10 +9,7 @@ import com.tencent.liteav.demo.superplayer.SuperPlayerGlobalConfig;
import com.tencent.liteav.demo.superplayer.SuperPlayerModel;
import com.tencent.liteav.demo.superplayer.SuperPlayerVideoId;
import com.tencent.liteav.demo.superplayer.SuperPlayerView;
import com.tencent.liteav.demo.superplayer.model.SuperPlayer;
import com.tencent.liteav.demo.superplayer.model.entity.SuperPlayerVideoIdV2;
import com.tencent.rtmp.TXLiveBase;
import com.tencent.rtmp.TXLiveConstants;
import java.util.ArrayList;
import java.util.List;
......@@ -146,6 +140,22 @@ public class SuperPlatformPlayerView implements PlatformView, MethodChannel.Meth
Map playConfig = call.argument("config");
setPlayConfig(playConfig);
result.success(null);
} else if(call.method.equals("disableGesture")) {
Boolean enable = call.argument("enable");
disableGesture(enable);
result.success(null);
} else if(call.method.equals("setIsAutoPlay")) {
Boolean enable = call.argument("isAutoPlay");
setIsAutoPlay(enable);
result.success(null);
} else if(call.method.equals("setStartTime")) {
Double startTime = call.argument("startTime");
setStartTime(startTime);
result.success(null);
} else if(call.method.equals("setLoop")) {
Boolean enable = call.argument("loop");
setLoop(enable);
result.success(null);
} else {
result.notImplemented();
}
......@@ -216,18 +226,22 @@ public class SuperPlatformPlayerView implements PlatformView, MethodChannel.Meth
}
public void setIsAutoPlay(boolean b) {
mSuperPlayerView.setIsAutoPlay(b);
}
public void setStartTime(double startTime) {
mSuperPlayerView.setStartTime(startTime);
}
public void disableGesture(boolean b) {
/**
* 关闭所有手势
* @param flag true为关闭手势,false为开启手势
*/
public void disableGesture(boolean flag) {
mSuperPlayerView.disableGesture(flag);
}
public void setLoop(boolean b) {
mSuperPlayerView.setLoop(b);
}
}
......@@ -863,4 +863,25 @@ public class SuperPlayerView extends RelativeLayout {
TXCLog.e(TAG, Log.getStackTraceString(e));
}
}
public void disableGesture(boolean flag) {
if(null != mFullScreenPlayer) {
mFullScreenPlayer.disableGesture(flag);
}
if(null != mWindowPlayer) {
mWindowPlayer.disableGesture(flag);
}
}
public void setIsAutoPlay(boolean b) {
mSuperPlayer.setAutoPlay(b);
}
public void setStartTime(double startTime) {
mSuperPlayer.setStartTime((float) startTime);
}
public void setLoop(boolean b) {
mSuperPlayer.setLoop(b);
}
}
......@@ -136,4 +136,22 @@ public interface SuperPlayer {
* @param observer {@link SuperPlayerObserver}
*/
void setObserver(SuperPlayerObserver observer);
/**
* 设置是否循环
* @param isLoop true循环,false不循环
*/
void setLoop(boolean isLoop);
/**
* 设置开始时间
* @param startPos 开始时间
*/
void setStartTime(float startPos);
/**
* 设置是否自动播放
* @param isAutoPlay true自动播放,false不自动播放
*/
void setAutoPlay(boolean isAutoPlay);
}
......@@ -66,11 +66,13 @@ public class SuperPlayerImpl implements SuperPlayer, ITXVodPlayListener, ITXLive
private String mCurrentPlayVideoURL; // 当前播放的URL
private int mSeekPos; // 记录切换硬解时的播放时间
private float mStartPos; // 视频开始播放时间
private long mReportLiveStartTime = -1; // 直播开始时间,用于上报使用时长
private long mReportVodStartTime = -1; // 点播开始时间,用于上报使用时长
private long mMaxLiveProgressTime; // 观看直播的最大时长
private boolean mIsAutoPlay = true; // 是否自动播放
private boolean mIsMultiBitrateStream; // 是否是多码流url播放
private boolean mIsPlayWithFileId; // 是否是腾讯云fileId播放
private boolean mDefaultQualitySet; // 标记播放多码流url时是否设置过默认画质
......@@ -419,8 +421,8 @@ public class SuperPlayerImpl implements SuperPlayer, ITXVodPlayListener, ITXLive
}
if (mVodPlayer != null) {
mDefaultQualitySet = false;
mVodPlayer.setStartTime(0);
mVodPlayer.setAutoPlay(true);
mVodPlayer.setStartTime(mStartPos);
mVodPlayer.setAutoPlay(mIsAutoPlay);
mVodPlayer.setVodListener(this);
String drmType = "plain";
if (mCurrentProtocol != null) {
......@@ -898,4 +900,22 @@ public class SuperPlayerImpl implements SuperPlayer, ITXVodPlayListener, ITXLive
public void setObserver(SuperPlayerObserver observer) {
mObserver = observer;
}
@Override
public void setLoop(boolean isLoop) {
mVodPlayer.setLoop(isLoop);
}
@Override
public void setStartTime(float startPos) {
this.mStartPos = startPos;
mVodPlayer.setStartTime(startPos);
}
@Override
public void setAutoPlay(boolean isAutoPlay) {
this.mIsAutoPlay = isAutoPlay;
mVodPlayer.setAutoPlay(isAutoPlay);
}
}
......@@ -111,6 +111,7 @@ public class FullScreenPlayer extends AbsPlayer implements View.OnClickListener,
private VideoQuality mDefaultVideoQuality; // 默认画质
private List<VideoQuality> mVideoQualityList; // 画质列表
private boolean mFirstShowQuality; // 是都是首次显示画质信息
private boolean mIsOpenGesture = true; // 是否开启手势
public FullScreenPlayer(Context context) {
super(context);
......@@ -571,7 +572,7 @@ public class FullScreenPlayer extends AbsPlayer implements View.OnClickListener,
@Override
public boolean onTouchEvent(MotionEvent event) {
if (mGestureDetector != null)
if (mIsOpenGesture && mGestureDetector != null)
mGestureDetector.onTouchEvent(event);
if (!mLockScreen) {
......@@ -902,6 +903,11 @@ public class FullScreenPlayer extends AbsPlayer implements View.OnClickListener,
mVodQualityView.setVisibility(View.GONE);
}
public void disableGesture(boolean flag) {
this.mIsOpenGesture = !flag;
}
/**
* 隐藏锁屏按钮的runnable
*/
......
......@@ -71,6 +71,7 @@ public class WindowPlayer extends AbsPlayer implements View.OnClickListener,
private float mWaterMarkBmpX; // 水印x坐标
private float mWaterMarkBmpY; // 水印y坐标
private long mLastClickTime; // 上次点击事件的时间
private boolean mIsOpenGesture = true; // 是否开启手势
public WindowPlayer(Context context) {
super(context);
......@@ -510,7 +511,7 @@ public class WindowPlayer extends AbsPlayer implements View.OnClickListener,
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
if (mGestureDetector != null)
if (mIsOpenGesture && mGestureDetector != null)
mGestureDetector.onTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_UP && mVideoGestureDetector != null && mVideoGestureDetector.isVideoProgressModel()) {
......@@ -636,4 +637,8 @@ public class WindowPlayer extends AbsPlayer implements View.OnClickListener,
}
postDelayed(mHideViewRunnable, 7000);
}
public void disableGesture(boolean flag) {
this.mIsOpenGesture = !flag;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论