From a5af523195a155299c2c3cd084a4940457d17a39 Mon Sep 17 00:00:00 2001 From: kunfei Date: Wed, 30 Mar 2022 11:41:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/io/legado/app/service/AudioPlayService.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/io/legado/app/service/AudioPlayService.kt b/app/src/main/java/io/legado/app/service/AudioPlayService.kt index afef1ce3a..081fdd324 100644 --- a/app/src/main/java/io/legado/app/service/AudioPlayService.kt +++ b/app/src/main/java/io/legado/app/service/AudioPlayService.kt @@ -61,6 +61,7 @@ class AudioPlayService : BaseService(), } private var mediaSessionCompat: MediaSessionCompat? = null private var broadcastReceiver: BroadcastReceiver? = null + private var audioFocusLossTransient = false private var position = AudioPlay.book?.durChapterPos ?: 0 private var dsJob: Job? = null private var upPlayProgressJob: Job? = null @@ -425,13 +426,18 @@ class AudioPlayService : BaseService(), when (focusChange) { AudioManager.AUDIOFOCUS_GAIN -> { // 重新获得焦点, 可做恢复播放,恢复后台音量的操作 + audioFocusLossTransient = false if (!pause) resume() } AudioManager.AUDIOFOCUS_LOSS -> { // 永久丢失焦点除非重新主动获取,这种情况是被其他播放器抢去了焦点, 为避免与其他播放器混音,可将音乐暂停 + if (audioFocusLossTransient) { + pause(true) + } } AudioManager.AUDIOFOCUS_LOSS_TRANSIENT -> { // 暂时丢失焦点,这种情况是被其他应用申请了短暂的焦点,可压低后台音量 + audioFocusLossTransient = true if (!pause) pause(false) } AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK -> {