Unverified 提交 ba13f0f5 authored 作者: Dokieyang's avatar Dokieyang 提交者: GitHub

Merge pull request #9 from Kongdy/main

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