From 8afa5198925bd5839adbfdfdfa1f2da33f34a64b Mon Sep 17 00:00:00 2001 From: liweijie Date: Mon, 23 Jul 2018 12:47:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=B9=E4=BA=8EAudio?= =?UTF-8?q?=E5=86=B2=E7=AA=81=E6=97=B6=E5=80=99=E7=9A=84=E5=A4=84=E7=90=86?= =?UTF-8?q?=EF=BC=8C=E5=AD=90=E7=B1=BB=E5=8F=AF=E4=BB=A5=E5=A4=8D=E5=86=99?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E8=87=AA=E5=B7=B1=E8=87=AA=E8=A1=8C=E5=8F=A6?= =?UTF-8?q?=E5=A4=96=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../video/base/GSYVideoView.java | 64 ++++++++++++++----- 1 file changed, 47 insertions(+), 17 deletions(-) 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 cc79711..22de5ee 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 @@ -337,32 +337,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 @@ -1013,7 +1042,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() { @@ -1036,7 +1065,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) { @@ -1076,6 +1105,7 @@ public abstract class GSYVideoView extends GSYTextureRenderView implements GSYMe /** * 单独设置mapHeader + * * @param headData */ public void setMapHeadData(Map headData) { -- GitLab