pull/2300/head
Horis 3 years ago
parent 9ac00b6bbc
commit d696e10281
  1. 11
      app/src/main/java/io/legado/app/service/AudioPlayService.kt
  2. 11
      app/src/main/java/io/legado/app/service/BaseReadAloudService.kt
  3. 3
      app/src/main/java/io/legado/app/ui/book/read/page/entities/TextPage.kt

@ -121,6 +121,7 @@ class AudioPlayService : BaseService(),
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
isRun = false isRun = false
abandonFocus()
exoPlayer.release() exoPlayer.release()
mediaSessionCompat?.release() mediaSessionCompat?.release()
unregisterReceiver(broadcastReceiver) unregisterReceiver(broadcastReceiver)
@ -169,6 +170,7 @@ class AudioPlayService : BaseService(),
private fun pause() { private fun pause() {
try { try {
pause = true pause = true
abandonFocus()
upPlayProgressJob?.cancel() upPlayProgressJob?.cancel()
position = exoPlayer.currentPosition.toInt() position = exoPlayer.currentPosition.toInt()
if (exoPlayer.isPlaying) exoPlayer.pause() if (exoPlayer.isPlaying) exoPlayer.pause()
@ -549,6 +551,7 @@ class AudioPlayService : BaseService(),
} }
/** /**
* 请求音频焦点
* @return 音频焦点 * @return 音频焦点
*/ */
private fun requestFocus(): Boolean { private fun requestFocus(): Boolean {
@ -558,4 +561,12 @@ class AudioPlayService : BaseService(),
return MediaHelp.requestFocus(audioManager, mFocusRequest) return MediaHelp.requestFocus(audioManager, mFocusRequest)
} }
/**
* 放弃音频焦点
*/
private fun abandonFocus() {
@Suppress("DEPRECATION")
audioManager.abandonAudioFocus(this)
}
} }

@ -92,6 +92,7 @@ abstract class BaseReadAloudService : BaseService(),
super.onDestroy() super.onDestroy()
isRun = false isRun = false
pause = true pause = true
abandonFocus()
unregisterReceiver(broadcastReceiver) unregisterReceiver(broadcastReceiver)
postEvent(EventBus.ALOUD_STATE, Status.STOP) postEvent(EventBus.ALOUD_STATE, Status.STOP)
upMediaSessionPlaybackState(PlaybackStateCompat.STATE_STOPPED) upMediaSessionPlaybackState(PlaybackStateCompat.STATE_STOPPED)
@ -149,6 +150,7 @@ abstract class BaseReadAloudService : BaseService(),
@CallSuper @CallSuper
open fun pauseReadAloud() { open fun pauseReadAloud() {
pause = true pause = true
abandonFocus()
upNotification() upNotification()
upMediaSessionPlaybackState(PlaybackStateCompat.STATE_PAUSED) upMediaSessionPlaybackState(PlaybackStateCompat.STATE_PAUSED)
postEvent(EventBus.ALOUD_STATE, Status.PAUSE) postEvent(EventBus.ALOUD_STATE, Status.PAUSE)
@ -228,6 +230,7 @@ abstract class BaseReadAloudService : BaseService(),
} }
/** /**
* 请求音频焦点
* @return 音频焦点 * @return 音频焦点
*/ */
fun requestFocus(): Boolean { fun requestFocus(): Boolean {
@ -241,6 +244,14 @@ abstract class BaseReadAloudService : BaseService(),
return requestFocus return requestFocus
} }
/**
* 放弃音频焦点
*/
private fun abandonFocus() {
@Suppress("DEPRECATION")
audioManager.abandonAudioFocus(this)
}
/** /**
* 更新媒体状态 * 更新媒体状态
*/ */

@ -201,6 +201,9 @@ data class TextPage(
val maxIndex = min(lineIndex, lineSize) val maxIndex = min(lineIndex, lineSize)
for (index in 0 until maxIndex) { for (index in 0 until maxIndex) {
length += textLines[index].charSize length += textLines[index].charSize
if (textLines[index].isParagraphEnd) {
length++
}
} }
return length + columnIndex return length + columnIndex
} }

Loading…
Cancel
Save