From d696e102818b61f5d4242dff490f8435d2d4ad9d Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Sun, 18 Sep 2022 23:09:20 +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 --- .../java/io/legado/app/service/AudioPlayService.kt | 11 +++++++++++ .../io/legado/app/service/BaseReadAloudService.kt | 11 +++++++++++ .../legado/app/ui/book/read/page/entities/TextPage.kt | 3 +++ 3 files changed, 25 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 2c949fc17..5856daf99 100644 --- a/app/src/main/java/io/legado/app/service/AudioPlayService.kt +++ b/app/src/main/java/io/legado/app/service/AudioPlayService.kt @@ -121,6 +121,7 @@ class AudioPlayService : BaseService(), override fun onDestroy() { super.onDestroy() isRun = false + abandonFocus() exoPlayer.release() mediaSessionCompat?.release() unregisterReceiver(broadcastReceiver) @@ -169,6 +170,7 @@ class AudioPlayService : BaseService(), private fun pause() { try { pause = true + abandonFocus() upPlayProgressJob?.cancel() position = exoPlayer.currentPosition.toInt() if (exoPlayer.isPlaying) exoPlayer.pause() @@ -549,6 +551,7 @@ class AudioPlayService : BaseService(), } /** + * 请求音频焦点 * @return 音频焦点 */ private fun requestFocus(): Boolean { @@ -558,4 +561,12 @@ class AudioPlayService : BaseService(), return MediaHelp.requestFocus(audioManager, mFocusRequest) } + /** + * 放弃音频焦点 + */ + private fun abandonFocus() { + @Suppress("DEPRECATION") + audioManager.abandonAudioFocus(this) + } + } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt b/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt index 91f09c082..54bf32b68 100644 --- a/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt +++ b/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt @@ -92,6 +92,7 @@ abstract class BaseReadAloudService : BaseService(), super.onDestroy() isRun = false pause = true + abandonFocus() unregisterReceiver(broadcastReceiver) postEvent(EventBus.ALOUD_STATE, Status.STOP) upMediaSessionPlaybackState(PlaybackStateCompat.STATE_STOPPED) @@ -149,6 +150,7 @@ abstract class BaseReadAloudService : BaseService(), @CallSuper open fun pauseReadAloud() { pause = true + abandonFocus() upNotification() upMediaSessionPlaybackState(PlaybackStateCompat.STATE_PAUSED) postEvent(EventBus.ALOUD_STATE, Status.PAUSE) @@ -228,6 +230,7 @@ abstract class BaseReadAloudService : BaseService(), } /** + * 请求音频焦点 * @return 音频焦点 */ fun requestFocus(): Boolean { @@ -241,6 +244,14 @@ abstract class BaseReadAloudService : BaseService(), return requestFocus } + /** + * 放弃音频焦点 + */ + private fun abandonFocus() { + @Suppress("DEPRECATION") + audioManager.abandonAudioFocus(this) + } + /** * 更新媒体状态 */ diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextPage.kt b/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextPage.kt index 3c69c1e19..620b18bc9 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextPage.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextPage.kt @@ -201,6 +201,9 @@ data class TextPage( val maxIndex = min(lineIndex, lineSize) for (index in 0 until maxIndex) { length += textLines[index].charSize + if (textLines[index].isParagraphEnd) { + length++ + } } return length + columnIndex }