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 }