diff --git a/gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/video/base/GSYVideoView.java b/gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/video/base/GSYVideoView.java index d2840c87b688da959d92d8c94a085283df2224da..f85df63b3f313df41d744b5415d86dac85d82e8c 100644 --- a/gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/video/base/GSYVideoView.java +++ b/gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/video/base/GSYVideoView.java @@ -339,32 +339,61 @@ public abstract class GSYVideoView extends GSYTextureRenderView implements GSYMe public void onAudioFocusChange(int focusChange) { switch (focusChange) { case AudioManager.AUDIOFOCUS_GAIN: + onGankAudio(); break; case AudioManager.AUDIOFOCUS_LOSS: - post(new Runnable() { - @Override - public void run() { - if (mReleaseWhenLossAudio) { - releaseVideos(); - } else { - onVideoPause(); - } - } - }); + onLossAudio(); break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: - try { - onVideoPause(); - } catch (Exception e) { - e.printStackTrace(); - } + onLossTransientAudio(); break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: + onLossTransientCanDuck(); break; } } }; + /** + * 获得了Audio Focus + */ + protected void onGankAudio() { + } + + /** + * 失去了Audio Focus,并将会持续很长的时间 + */ + protected void onLossAudio() { + this.post(new Runnable() { + public void run() { + if (GSYVideoView.this.mReleaseWhenLossAudio) { + GSYVideoView.this.releaseVideos(); + } else { + GSYVideoView.this.onVideoPause(); + } + + } + }); + } + + /** + * 暂时失去Audio Focus,并会很快再次获得 + */ + protected void onLossTransientAudio() { + try { + this.onVideoPause(); + } catch (Exception var2) { + var2.printStackTrace(); + } + + } + + /** + * 暂时失去AudioFocus,但是可以继续播放,不过要在降低音量 + */ + protected void onLossTransientCanDuck() { + } + /** * 设置播放URL @@ -1015,7 +1044,7 @@ public abstract class GSYVideoView extends GSYTextureRenderView implements GSYMe */ public void setSpeedPlaying(float speed, boolean soundTouch) { setSpeed(speed, soundTouch); - getGSYVideoManager().setSpeedPlaying( speed, soundTouch); + getGSYVideoManager().setSpeedPlaying(speed, soundTouch); } public boolean isShowPauseCover() { @@ -1038,7 +1067,7 @@ public abstract class GSYVideoView extends GSYTextureRenderView implements GSYMe */ public void seekTo(long position) { try { - if (getGSYVideoManager()!= null && position > 0) { + if (getGSYVideoManager() != null && position > 0) { getGSYVideoManager().seekTo(position); } } catch (Exception e) { @@ -1078,6 +1107,7 @@ public abstract class GSYVideoView extends GSYTextureRenderView implements GSYMe /** * 单独设置mapHeader + * * @param headData */ public void setMapHeadData(Map headData) {