提交 b672fec8 编写于 作者: S shuyu

1.2.6

上级 de74ec5d
...@@ -17,13 +17,13 @@ ...@@ -17,13 +17,13 @@
<dependency> <dependency>
<groupId>com.shuyu</groupId> <groupId>com.shuyu</groupId>
<artifactId>gsyVideoPlayer</artifactId> <artifactId>gsyVideoPlayer</artifactId>
<version>1.2.5</version> <version>1.2.6</version>
<type>pom</type> <type>pom</type>
</dependency> </dependency>
``` ```
``` ```
compile 'com.shuyu:gsyVideoPlayer:1.2.5' compile 'com.shuyu:gsyVideoPlayer:1.2.6'
``` ```
## 效果,录屏下的屏幕旋转和实际有些出入 ## 效果,录屏下的屏幕旋转和实际有些出入
...@@ -43,6 +43,16 @@ compile 'com.shuyu:gsyVideoPlayer:1.2.5' ...@@ -43,6 +43,16 @@ compile 'com.shuyu:gsyVideoPlayer:1.2.5'
* <h4>3、详情模式</h4> * <h4>3、详情模式</h4>
<img src="https://github.com/CarGuo/GSYVideoPlayer/blob/master/04.gif" width="240px" height="426px"/> <img src="https://github.com/CarGuo/GSYVideoPlayer/blob/master/04.gif" width="240px" height="426px"/>
### 1.2.6 修正了StandardGSYVideoPlayer的接口全屏回调问题,增加了循环播放的接口
```
public void setLooping(boolean looping)
```
### 1.2.5 增加了新接口,支持直接横屏锁住界面,关闭全屏动画,组合接口使用 ### 1.2.5 增加了新接口,支持直接横屏锁住界面,关闭全屏动画,组合接口使用
* GSYVideoPlayer * GSYVideoPlayer
......
...@@ -8,10 +8,12 @@ import android.widget.BaseAdapter; ...@@ -8,10 +8,12 @@ import android.widget.BaseAdapter;
import android.widget.ImageView; import android.widget.ImageView;
import com.example.gsyvideoplayer.R; import com.example.gsyvideoplayer.R;
import com.example.gsyvideoplayer.listener.SampleListener;
import com.example.gsyvideoplayer.model.VideoModel; import com.example.gsyvideoplayer.model.VideoModel;
import com.shuyu.gsyvideoplayer.GSYVideoManager; import com.shuyu.gsyvideoplayer.GSYVideoManager;
import com.shuyu.gsyvideoplayer.GSYVideoPlayer; import com.shuyu.gsyvideoplayer.GSYVideoPlayer;
import com.shuyu.gsyvideoplayer.listener.StandardVideoAllCallBack; import com.shuyu.gsyvideoplayer.listener.StandardVideoAllCallBack;
import com.shuyu.gsyvideoplayer.utils.Debuger;
import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer; import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -95,7 +97,10 @@ public class ListNormalAdapter extends BaseAdapter { ...@@ -95,7 +97,10 @@ public class ListNormalAdapter extends BaseAdapter {
holder.gsyVideoPlayer.setLockLand(true); holder.gsyVideoPlayer.setLockLand(true);
holder.gsyVideoPlayer.setPlayTag(TAG); holder.gsyVideoPlayer.setPlayTag(TAG);
holder.gsyVideoPlayer.setShowFullAnimation(true); holder.gsyVideoPlayer.setShowFullAnimation(true);
//循环
holder.gsyVideoPlayer.setLooping(true);
holder.gsyVideoPlayer.setPlayPosition(position); holder.gsyVideoPlayer.setPlayPosition(position);
holder.gsyVideoPlayer.setStandardVideoAllCallBack(sampleListener);
return convertView; return convertView;
} }
...@@ -113,4 +118,31 @@ public class ListNormalAdapter extends BaseAdapter { ...@@ -113,4 +118,31 @@ public class ListNormalAdapter extends BaseAdapter {
StandardGSYVideoPlayer gsyVideoPlayer; StandardGSYVideoPlayer gsyVideoPlayer;
} }
//小窗口关闭被点击的时候回调处理回复页面
SampleListener sampleListener = new SampleListener(){
@Override
public void onPrepared(String url, Object... objects) {
super.onPrepared(url, objects);
Debuger.printfLog("onPrepared");
}
@Override
public void onQuitSmallWidget(String url, Object... objects) {
super.onQuitSmallWidget(url, objects);
Debuger.printfLog("onQuitSmallWidget");
}
@Override
public void onClickBlankFullscreen(String url, Object... objects) {
super.onClickBlankFullscreen(url, objects);
Debuger.printfLog("onClickBlankFullscreen");
}
@Override
public void onEnterFullscreen(String url, Object... objects) {
super.onEnterFullscreen(url, objects);
Debuger.printfLog("onEnterFullscreen");
}
};
} }
...@@ -86,6 +86,7 @@ public class ListVideoAdapter extends BaseAdapter { ...@@ -86,6 +86,7 @@ public class ListVideoAdapter extends BaseAdapter {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
notifyDataSetChanged(); notifyDataSetChanged();
listVideoUtil.setLoop(true);
listVideoUtil.setPlayPositionAndTag(position, TAG); listVideoUtil.setPlayPositionAndTag(position, TAG);
final String url = "http://baobab.wdjcdn.com/14564977406580.mp4"; final String url = "http://baobab.wdjcdn.com/14564977406580.mp4";
listVideoUtil.startPlay(url); listVideoUtil.startPlay(url);
......
...@@ -18,7 +18,7 @@ org.gradle.jvmargs=-Xmx1536m ...@@ -18,7 +18,7 @@ org.gradle.jvmargs=-Xmx1536m
BINTRAY_USER= BINTRAY_USER=
BINTRAY_KEY= BINTRAY_KEY=
PROJ_GROUP=com.shuyu PROJ_GROUP=com.shuyu
PROJ_VERSION=1.2.5 PROJ_VERSION=1.2.6
PROJ_NAME=gsyVideo PROJ_NAME=gsyVideo
PROJ_WEBSITEURL=hhttps://github.com/CarGuo/GSYVideoPlayer PROJ_WEBSITEURL=hhttps://github.com/CarGuo/GSYVideoPlayer
PROJ_ISSUETRACKERURL= PROJ_ISSUETRACKERURL=
......
...@@ -131,6 +131,7 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP ...@@ -131,6 +131,7 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
mediaPlayer = new IjkMediaPlayer(); mediaPlayer = new IjkMediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(((GSYModel) msg.obj).getUrl(), ((GSYModel) msg.obj).getMapHeadData()); mediaPlayer.setDataSource(((GSYModel) msg.obj).getUrl(), ((GSYModel) msg.obj).getMapHeadData());
mediaPlayer.setLooping(((GSYModel) msg.obj).isLooping());
mediaPlayer.setOnCompletionListener(GSYVideoManager.this); mediaPlayer.setOnCompletionListener(GSYVideoManager.this);
mediaPlayer.setOnBufferingUpdateListener(GSYVideoManager.this); mediaPlayer.setOnBufferingUpdateListener(GSYVideoManager.this);
mediaPlayer.setScreenOnWhilePlaying(true); mediaPlayer.setScreenOnWhilePlaying(true);
...@@ -145,17 +146,19 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP ...@@ -145,17 +146,19 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
} }
break; break;
case HANDLER_SETDISPLAY: case HANDLER_SETDISPLAY:
if (msg.obj == null) { if (msg.obj == null && mediaPlayer != null) {
mediaPlayer.setSurface(null); mediaPlayer.setSurface(null);
} else { } else {
Surface holder = (Surface) msg.obj; Surface holder = (Surface) msg.obj;
if (holder.isValid()) { if (mediaPlayer != null && holder.isValid()) {
mediaPlayer.setSurface(holder); mediaPlayer.setSurface(holder);
} }
} }
break; break;
case HANDLER_RELEASE: case HANDLER_RELEASE:
mediaPlayer.release(); if (mediaPlayer != null) {
mediaPlayer.release();
}
break; break;
} }
} }
......
...@@ -123,8 +123,6 @@ public abstract class GSYVideoPlayer extends GSYBaseVideoPlayer implements View. ...@@ -123,8 +123,6 @@ public abstract class GSYVideoPlayer extends GSYBaseVideoPlayer implements View.
protected boolean mFirstTouch = false;//是否首次触摸 protected boolean mFirstTouch = false;//是否首次触摸
protected boolean mLooping = false;//// TODO: 2016/11/13 循环
protected boolean mCacheFile = false; //是否是缓存的文件 protected boolean mCacheFile = false; //是否是缓存的文件
...@@ -729,6 +727,10 @@ public abstract class GSYVideoPlayer extends GSYBaseVideoPlayer implements View. ...@@ -729,6 +727,10 @@ public abstract class GSYVideoPlayer extends GSYBaseVideoPlayer implements View.
public void onBufferingUpdate(int percent) { public void onBufferingUpdate(int percent) {
if (mCurrentState != CURRENT_STATE_NORMAL && mCurrentState != CURRENT_STATE_PREPAREING) { if (mCurrentState != CURRENT_STATE_NORMAL && mCurrentState != CURRENT_STATE_PREPAREING) {
setTextAndProgress(percent); setTextAndProgress(percent);
//循环清除进度
if (mLooping && percent == 0 && mProgressBar.getProgress() > 3) {
loopSetProgressAndTime();
}
} }
} }
...@@ -863,6 +865,7 @@ public abstract class GSYVideoPlayer extends GSYBaseVideoPlayer implements View. ...@@ -863,6 +865,7 @@ public abstract class GSYVideoPlayer extends GSYBaseVideoPlayer implements View.
mTotalTimeTextView.setText(CommonUtil.stringForTime(totalTime)); mTotalTimeTextView.setText(CommonUtil.stringForTime(totalTime));
} }
protected void resetProgressAndTime() { protected void resetProgressAndTime() {
mProgressBar.setProgress(0); mProgressBar.setProgress(0);
mProgressBar.setSecondaryProgress(0); mProgressBar.setSecondaryProgress(0);
...@@ -870,6 +873,13 @@ public abstract class GSYVideoPlayer extends GSYBaseVideoPlayer implements View. ...@@ -870,6 +873,13 @@ public abstract class GSYVideoPlayer extends GSYBaseVideoPlayer implements View.
mTotalTimeTextView.setText(CommonUtil.stringForTime(0)); mTotalTimeTextView.setText(CommonUtil.stringForTime(0));
} }
protected void loopSetProgressAndTime() {
mProgressBar.setProgress(0);
mProgressBar.setSecondaryProgress(0);
mCurrentTimeTextView.setText(CommonUtil.stringForTime(0));
}
/** /**
* 页面销毁了记得调用是否所有的video * 页面销毁了记得调用是否所有的video
*/ */
......
...@@ -43,6 +43,7 @@ public class ListVideoUtil { ...@@ -43,6 +43,7 @@ public class ListVideoUtil {
private boolean isSmall; //当前是否小屏 private boolean isSmall; //当前是否小屏
private boolean hideStatusBar; //是否隐藏有状态bar private boolean hideStatusBar; //是否隐藏有状态bar
private boolean hideActionBar; //是否隐藏有状态ActionBar private boolean hideActionBar; //是否隐藏有状态ActionBar
private boolean isLoop;//循环
private int[] listItemRect;//当前item框的屏幕位置 private int[] listItemRect;//当前item框的屏幕位置
...@@ -114,6 +115,8 @@ public class ListVideoUtil { ...@@ -114,6 +115,8 @@ public class ListVideoUtil {
gsyVideoPlayer.release(); gsyVideoPlayer.release();
gsyVideoPlayer.setLooping(isLoop);
gsyVideoPlayer.setUp(url, true, ""); gsyVideoPlayer.setUp(url, true, "");
//增加title //增加title
...@@ -494,6 +497,17 @@ public class ListVideoUtil { ...@@ -494,6 +497,17 @@ public class ListVideoUtil {
} }
public boolean isLoop() {
return isLoop;
}
/**
* 循环
*/
public void setLoop(boolean loop) {
isLoop = loop;
}
/** /**
* 获取当前总时长 * 获取当前总时长
*/ */
...@@ -509,7 +523,7 @@ public class ListVideoUtil { ...@@ -509,7 +523,7 @@ public class ListVideoUtil {
} }
/** /**
* 获取播放器 * 获取播放器,直接拿播放器,根据需要自定义配置
*/ */
public StandardGSYVideoPlayer getGsyVideoPlayer() { public StandardGSYVideoPlayer getGsyVideoPlayer() {
return gsyVideoPlayer; return gsyVideoPlayer;
......
...@@ -65,6 +65,8 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia ...@@ -65,6 +65,8 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
protected boolean mLockLand = false;//当前全屏是否锁定全屏 protected boolean mLockLand = false;//当前全屏是否锁定全屏
protected boolean mLooping = false;//循环
protected Context mContext; protected Context mContext;
protected String mOriginUrl; //原来的url protected String mOriginUrl; //原来的url
...@@ -195,7 +197,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia ...@@ -195,7 +197,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
* @param actionBar 是否有actionBar,有的话需要隐藏 * @param actionBar 是否有actionBar,有的话需要隐藏
* @param statusBar 是否有状态bar,有的话需要隐藏 * @param statusBar 是否有状态bar,有的话需要隐藏
*/ */
public void startWindowFullscreen(final Context context, final boolean actionBar, final boolean statusBar) { public GSYBaseVideoPlayer startWindowFullscreen(final Context context, final boolean actionBar, final boolean statusBar) {
hideSupportActionBar(context, actionBar, statusBar); hideSupportActionBar(context, actionBar, statusBar);
...@@ -224,7 +226,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia ...@@ -224,7 +226,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
gsyVideoPlayer.setId(FULLSCREEN_ID); gsyVideoPlayer.setId(FULLSCREEN_ID);
gsyVideoPlayer.setIfCurrentIsFullscreen(true); gsyVideoPlayer.setIfCurrentIsFullscreen(true);
gsyVideoPlayer.setVideoAllCallBack(mVideoAllCallBack); gsyVideoPlayer.setVideoAllCallBack(mVideoAllCallBack);
gsyVideoPlayer.setLooping(isLooping());
final FrameLayout.LayoutParams lpParent = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); final FrameLayout.LayoutParams lpParent = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
final FrameLayout frameLayout = new FrameLayout(context); final FrameLayout frameLayout = new FrameLayout(context);
frameLayout.setBackgroundColor(Color.BLACK); frameLayout.setBackgroundColor(Color.BLACK);
...@@ -271,10 +273,11 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia ...@@ -271,10 +273,11 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
GSYVideoManager.instance().setLastListener(this); GSYVideoManager.instance().setLastListener(this);
GSYVideoManager.instance().setListener(gsyVideoPlayer); GSYVideoManager.instance().setListener(gsyVideoPlayer);
return gsyVideoPlayer;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return null;
} }
...@@ -332,7 +335,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia ...@@ -332,7 +335,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
/** /**
* 显示小窗口 * 显示小窗口
*/ */
public void showSmallVideo(Point size, final boolean actionBar, final boolean statusBar) { public GSYBaseVideoPlayer showSmallVideo(Point size, final boolean actionBar, final boolean statusBar) {
final ViewGroup vp = getViewGroup(); final ViewGroup vp = getViewGroup();
...@@ -373,6 +376,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia ...@@ -373,6 +376,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
//隐藏掉所有的弹出状态哟 //隐藏掉所有的弹出状态哟
gsyVideoPlayer.onClickUiToggle(); gsyVideoPlayer.onClickUiToggle();
gsyVideoPlayer.setVideoAllCallBack(mVideoAllCallBack); gsyVideoPlayer.setVideoAllCallBack(mVideoAllCallBack);
gsyVideoPlayer.setLooping(isLooping());
gsyVideoPlayer.setSmallVideoTextureView(new SmallVideoTouch(gsyVideoPlayer, marginLeft, marginTop)); gsyVideoPlayer.setSmallVideoTextureView(new SmallVideoTouch(gsyVideoPlayer, marginLeft, marginTop));
GSYVideoManager.instance().setLastListener(this); GSYVideoManager.instance().setLastListener(this);
...@@ -383,12 +387,11 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia ...@@ -383,12 +387,11 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
mVideoAllCallBack.onEnterSmallWidget(mUrl, mObjects); mVideoAllCallBack.onEnterSmallWidget(mUrl, mObjects);
} }
} catch (InstantiationException e) { return gsyVideoPlayer;
e.printStackTrace();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return null;
} }
/** /**
...@@ -489,6 +492,18 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia ...@@ -489,6 +492,18 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
} }
public boolean isLooping() {
return mLooping;
}
/**
* 设置循环
*/
public void setLooping(boolean looping) {
this.mLooping = looping;
}
/** /**
* 设置播放过程中的回调 * 设置播放过程中的回调
* *
......
...@@ -5,6 +5,7 @@ import android.app.AlertDialog; ...@@ -5,6 +5,7 @@ import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.graphics.Point;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.AttributeSet; import android.util.AttributeSet;
...@@ -503,7 +504,7 @@ public class StandardGSYVideoPlayer extends GSYVideoPlayer { ...@@ -503,7 +504,7 @@ public class StandardGSYVideoPlayer extends GSYVideoPlayer {
mProgressDialog.getWindow().addFlags(32); mProgressDialog.getWindow().addFlags(32);
mProgressDialog.getWindow().addFlags(16); mProgressDialog.getWindow().addFlags(16);
mProgressDialog.getWindow().setLayout(-2, -2); mProgressDialog.getWindow().setLayout(-2, -2);
if(mDialogProgressNormalColor != -11) { if (mDialogProgressNormalColor != -11) {
mDialogTotalTime.setTextColor(mDialogProgressNormalColor); mDialogTotalTime.setTextColor(mDialogProgressNormalColor);
} }
if (mDialogProgressHighLightColor != -11) { if (mDialogProgressHighLightColor != -11) {
...@@ -603,6 +604,39 @@ public class StandardGSYVideoPlayer extends GSYVideoPlayer { ...@@ -603,6 +604,39 @@ public class StandardGSYVideoPlayer extends GSYVideoPlayer {
} }
} }
@Override
protected void loopSetProgressAndTime() {
super.loopSetProgressAndTime();
mBottomProgressBar.setProgress(0);
}
@Override
public void onBackFullscreen() {
clearFullscreenLayout();
}
@Override
public GSYBaseVideoPlayer startWindowFullscreen(Context context, boolean actionBar, boolean statusBar) {
GSYBaseVideoPlayer gsyBaseVideoPlayer = super.startWindowFullscreen(context, actionBar, statusBar);
if (gsyBaseVideoPlayer != null) {
StandardGSYVideoPlayer gsyVideoPlayer = (StandardGSYVideoPlayer) gsyBaseVideoPlayer;
gsyVideoPlayer.setStandardVideoAllCallBack(mStandardVideoAllCallBack);
}
return gsyBaseVideoPlayer;
}
@Override
public GSYBaseVideoPlayer showSmallVideo(Point size, boolean actionBar, boolean statusBar) {
GSYBaseVideoPlayer gsyBaseVideoPlayer = super.showSmallVideo(size, actionBar, statusBar);
if (gsyBaseVideoPlayer != null) {
StandardGSYVideoPlayer gsyVideoPlayer = (StandardGSYVideoPlayer) gsyBaseVideoPlayer;
gsyVideoPlayer.setStandardVideoAllCallBack(mStandardVideoAllCallBack);
}
return gsyBaseVideoPlayer;
}
private void startDismissControlViewTimer() { private void startDismissControlViewTimer() {
cancelDismissControlViewTimer(); cancelDismissControlViewTimer();
...@@ -677,10 +711,6 @@ public class StandardGSYVideoPlayer extends GSYVideoPlayer { ...@@ -677,10 +711,6 @@ public class StandardGSYVideoPlayer extends GSYVideoPlayer {
return mTitleTextView; return mTitleTextView;
} }
@Override
public void onBackFullscreen() {
clearFullscreenLayout();
}
/** /**
* 底部进度条-弹出的 * 底部进度条-弹出的
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册