diff --git a/README.md b/README.md index ee82af119e51b85892f43a709ac1536c05fb87b5..018e42c87caec4cdbfc49332e713cb73c87f9b04 100644 --- a/README.md +++ b/README.md @@ -17,13 +17,13 @@ com.shuyu gsyVideoPlayer - 1.2.7 + 1.2.8 pom ``` ``` -compile 'com.shuyu:gsyVideoPlayer:1.2.7' +compile 'com.shuyu:gsyVideoPlayer:1.2.8' ``` ## 效果,录屏下的屏幕旋转和实际有些出入 @@ -43,6 +43,13 @@ compile 'com.shuyu:gsyVideoPlayer:1.2.7' *

3、详情模式

+### 1.2.8 增加了改变播放速度的方法,0 - 2左右的速度,但只支持6.0以上(= =),升级IJKPlayer到0.7.5。 +``` +/** + * 播放速度 + */ +public void setSpeed(float speed) +``` ### 1.2.7 修改了循环播放的时候,重新播放不弹出控制UI;修改了FragmentActivity的actionBar问题 diff --git a/dependencies.gradle b/dependencies.gradle index f8d6cebfcbc3a341b14059e7253cd6e6fa7c9cd4..a7c20da468cec7d8dfe7c4caf147a1f1c84bbe77 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -16,7 +16,7 @@ ext { //ViewLibraries butterKnifeVersion = '8.2.1' - ijkplayer = '0.7.4' + ijkplayer = '0.7.5' transitionseverywhere = '1.7.0' diff --git a/gradle.properties b/gradle.properties index 0751c392cd253cf53703ebbd64a75630715afdf7..13ca9853b8674ef681bc15a1b75467ad24b0ce3e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,7 +18,7 @@ org.gradle.jvmargs=-Xmx1536m BINTRAY_USER= BINTRAY_KEY= PROJ_GROUP=com.shuyu -PROJ_VERSION=1.2.7 +PROJ_VERSION=1.2.8 PROJ_NAME=gsyVideo PROJ_WEBSITEURL=hhttps://github.com/CarGuo/GSYVideoPlayer PROJ_ISSUETRACKERURL= diff --git a/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoManager.java b/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoManager.java index d55bb1a4f913e5d4ba1ca9d3f21f4af2a0a499a8..5c1ff4053283b75ad9f43727ab7e375a421b5e30 100644 --- a/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoManager.java +++ b/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoManager.java @@ -140,6 +140,9 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP mediaPlayer.setOnErrorListener(GSYVideoManager.this); mediaPlayer.setOnInfoListener(GSYVideoManager.this); mediaPlayer.setOnVideoSizeChangedListener(GSYVideoManager.this); + if (((GSYModel) msg.obj).getSpeed() != 1 && ((GSYModel) msg.obj).getSpeed() > 0) { + mediaPlayer.setSpeed(((GSYModel) msg.obj).getSpeed()); + } mediaPlayer.prepareAsync(); } catch (Exception e) { e.printStackTrace(); @@ -166,11 +169,11 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP } - public void prepare(final String url, final Map mapHeadData, boolean loop) { + public void prepare(final String url, final Map mapHeadData, boolean loop, float speed) { if (TextUtils.isEmpty(url)) return; Message msg = new Message(); msg.what = HANDLER_PREPARE; - GSYModel fb = new GSYModel(url, mapHeadData, loop); + GSYModel fb = new GSYModel(url, mapHeadData, loop, speed); msg.obj = fb; mMediaHandler.sendMessage(msg); } diff --git a/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoPlayer.java b/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoPlayer.java index 497e753435e9fc75d8a134ab1795f52165bd6aba..f0fb9ed4b120953ff11f186d58b684451983dd89 100644 --- a/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoPlayer.java +++ b/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoPlayer.java @@ -339,7 +339,7 @@ public abstract class GSYVideoPlayer extends GSYBaseVideoPlayer implements View. mAudioManager.requestAudioFocus(onAudioFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); ((Activity) getContext()).getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - GSYVideoManager.instance().prepare(mUrl, mMapHeadData, mLooping); + GSYVideoManager.instance().prepare(mUrl, mMapHeadData, mLooping, mSpeed); setStateAndUi(CURRENT_STATE_PREPAREING); } diff --git a/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/model/GSYModel.java b/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/model/GSYModel.java index 3d055316715d9fad367338319513dc6df6fd893a..24ad594db9e73122f84f90a5fa4b9fb5e3a4c98e 100644 --- a/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/model/GSYModel.java +++ b/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/model/GSYModel.java @@ -11,12 +11,16 @@ public class GSYModel { String url; Map mapHeadData; + + float speed = 1; + boolean looping; - public GSYModel(String url, Map mapHeadData, boolean loop) { + public GSYModel(String url, Map mapHeadData, boolean loop, float speed) { this.url = url; this.mapHeadData = mapHeadData; this.looping = loop; + this.speed = speed; } public String getUrl() { @@ -42,4 +46,12 @@ public class GSYModel { public void setLooping(boolean looping) { this.looping = looping; } + + public float getSpeed() { + return speed; + } + + public void setSpeed(float speed) { + this.speed = speed; + } } diff --git a/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/utils/ListVideoUtil.java b/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/utils/ListVideoUtil.java index 29ea04af8e21e8896dc90cdaf0b05bd88c792a99..0706fe552d8b15a3f0ccde7d5aed72664f431bbc 100644 --- a/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/utils/ListVideoUtil.java +++ b/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/utils/ListVideoUtil.java @@ -39,6 +39,7 @@ public class ListVideoUtil { private Context context; private int playPosition = -1; // 播放的位置 + private int speed = 1; // 播放速度,仅支持6.0 private boolean isFull; //当前是否全屏 private boolean isSmall; //当前是否小屏 private boolean hideStatusBar; //是否隐藏有状态bar @@ -117,6 +118,8 @@ public class ListVideoUtil { gsyVideoPlayer.setLooping(isLoop); + gsyVideoPlayer.setSpeed(speed); + gsyVideoPlayer.setUp(url, true, ""); //增加title @@ -515,6 +518,18 @@ public class ListVideoUtil { return gsyVideoPlayer.getDuration(); } + + public int getSpeed() { + return speed; + } + + /** + * 播放速度,仅支持6.0 + */ + public void setSpeed(int speed) { + this.speed = speed; + } + /** * 获取当前播放进度 */ diff --git a/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/video/GSYBaseVideoPlayer.java b/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/video/GSYBaseVideoPlayer.java index 12d8b45cc932f8094d32d7b29814c8bca894b073..dd0ae2e32cf162c9620579e89809d7d06961d333 100644 --- a/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/video/GSYBaseVideoPlayer.java +++ b/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/video/GSYBaseVideoPlayer.java @@ -59,6 +59,8 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia protected int mCurrentState = -1; //当前的播放状态 + protected float mSpeed = 1;//播放速度,只支持6.0以上 + protected boolean mRotateViewAuto = true; //是否自动旋转 protected boolean mIfCurrentIsFullscreen = false;//当前是否全屏 @@ -229,6 +231,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia gsyVideoPlayer.setIfCurrentIsFullscreen(true); gsyVideoPlayer.setVideoAllCallBack(mVideoAllCallBack); gsyVideoPlayer.setLooping(isLooping()); + gsyVideoPlayer.setSpeed(getSpeed()); final FrameLayout.LayoutParams lpParent = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); final FrameLayout frameLayout = new FrameLayout(context); frameLayout.setBackgroundColor(Color.BLACK); @@ -379,6 +382,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia gsyVideoPlayer.onClickUiToggle(); gsyVideoPlayer.setVideoAllCallBack(mVideoAllCallBack); gsyVideoPlayer.setLooping(isLooping()); + gsyVideoPlayer.setSpeed(getSpeed()); gsyVideoPlayer.setSmallVideoTextureView(new SmallVideoTouch(gsyVideoPlayer, marginLeft, marginTop)); GSYVideoManager.instance().setLastListener(this); @@ -537,4 +541,16 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia public void setLockLand(boolean lockLand) { this.mLockLand = lockLand; } + + + public float getSpeed() { + return mSpeed; + } + + /** + * 播放速度,只支持6.0以上 + */ + public void setSpeed(float speed) { + this.mSpeed = speed; + } }