mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-13 09:26:52 -04:00
Fixes of KiwixTextToSpeech uses some deprecated methods
This commit is contained in:
parent
b85e3c482c
commit
8481b4d70d
@ -18,14 +18,16 @@
|
|||||||
package org.kiwix.kiwixmobile.core.main
|
package org.kiwix.kiwixmobile.core.main
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.media.AudioAttributes
|
||||||
|
import android.media.AudioFocusRequest
|
||||||
import android.media.AudioManager
|
import android.media.AudioManager
|
||||||
import android.media.AudioManager.OnAudioFocusChangeListener
|
import android.media.AudioManager.OnAudioFocusChangeListener
|
||||||
|
import android.os.Build
|
||||||
import android.speech.tts.TextToSpeech
|
import android.speech.tts.TextToSpeech
|
||||||
import android.speech.tts.TextToSpeech.Engine
|
import android.speech.tts.TextToSpeech.Engine
|
||||||
import android.speech.tts.TextToSpeech.LANG_MISSING_DATA
|
import android.speech.tts.TextToSpeech.LANG_MISSING_DATA
|
||||||
import android.speech.tts.TextToSpeech.LANG_NOT_SUPPORTED
|
import android.speech.tts.TextToSpeech.LANG_NOT_SUPPORTED
|
||||||
import android.speech.tts.TextToSpeech.OnInitListener
|
import android.speech.tts.TextToSpeech.OnInitListener
|
||||||
import android.speech.tts.TextToSpeech.QUEUE_ADD
|
|
||||||
import android.speech.tts.TextToSpeech.SUCCESS
|
import android.speech.tts.TextToSpeech.SUCCESS
|
||||||
import android.speech.tts.UtteranceProgressListener
|
import android.speech.tts.UtteranceProgressListener
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
@ -55,6 +57,7 @@ class KiwixTextToSpeech internal constructor(
|
|||||||
private var onAudioFocusChangeListener: OnAudioFocusChangeListener? = null,
|
private var onAudioFocusChangeListener: OnAudioFocusChangeListener? = null,
|
||||||
private val zimReaderContainer: ZimReaderContainer
|
private val zimReaderContainer: ZimReaderContainer
|
||||||
) {
|
) {
|
||||||
|
private var focusRequest: AudioFocusRequest? = null
|
||||||
private val focusLock: Any = Any()
|
private val focusLock: Any = Any()
|
||||||
private val am: AudioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
|
private val am: AudioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
|
||||||
@JvmField var currentTTSTask: TTSTask? = null
|
@JvmField var currentTTSTask: TTSTask? = null
|
||||||
@ -157,6 +160,19 @@ class KiwixTextToSpeech internal constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun requestAudioFocus(): Boolean {
|
private fun requestAudioFocus(): Boolean {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
focusRequest = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN)
|
||||||
|
.setAudioAttributes(AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA).build())
|
||||||
|
.setAcceptsDelayedFocusGain(true)
|
||||||
|
.setOnAudioFocusChangeListener(onAudioFocusChangeListener!!)
|
||||||
|
.setWillPauseWhenDucked(true)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
val focusGain = am.requestAudioFocus(focusRequest!!)
|
||||||
|
synchronized(focusLock) {
|
||||||
|
return@requestAudioFocus focusGain == AudioManager.AUDIOFOCUS_REQUEST_GRANTED
|
||||||
|
}
|
||||||
|
}
|
||||||
val audioFocusRequest = am.requestAudioFocus(
|
val audioFocusRequest = am.requestAudioFocus(
|
||||||
onAudioFocusChangeListener, AudioManager.STREAM_MUSIC,
|
onAudioFocusChangeListener, AudioManager.STREAM_MUSIC,
|
||||||
AudioManager.AUDIOFOCUS_GAIN
|
AudioManager.AUDIOFOCUS_GAIN
|
||||||
@ -190,7 +206,11 @@ class KiwixTextToSpeech internal constructor(
|
|||||||
*/
|
*/
|
||||||
fun shutdown() {
|
fun shutdown() {
|
||||||
tts.shutdown()
|
tts.shutdown()
|
||||||
am.abandonAudioFocus(onAudioFocusChangeListener)
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
focusRequest?.let(am::abandonAudioFocusRequest)
|
||||||
|
} else {
|
||||||
|
am.abandonAudioFocus(onAudioFocusChangeListener)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -231,11 +251,12 @@ class KiwixTextToSpeech internal constructor(
|
|||||||
paused = false
|
paused = false
|
||||||
// The utterance ID isn't actually used anywhere, the param is passed only to force
|
// The utterance ID isn't actually used anywhere, the param is passed only to force
|
||||||
// the utterance listener to be notified
|
// the utterance listener to be notified
|
||||||
val params = hashMapOf(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID to "kiwixLastMessage")
|
|
||||||
if (currentPiece.get() < pieces.size) {
|
if (currentPiece.get() < pieces.size) {
|
||||||
tts.speak(
|
tts.speak(
|
||||||
pieces[currentPiece.getAndIncrement()], QUEUE_ADD,
|
pieces[currentPiece.getAndIncrement()],
|
||||||
params
|
TextToSpeech.QUEUE_ADD,
|
||||||
|
null,
|
||||||
|
"kiwixLastMessage"
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
stop()
|
stop()
|
||||||
@ -250,7 +271,12 @@ class KiwixTextToSpeech internal constructor(
|
|||||||
if (line >= pieces.size && !paused) {
|
if (line >= pieces.size && !paused) {
|
||||||
stop()
|
stop()
|
||||||
} else {
|
} else {
|
||||||
tts.speak(pieces[line], QUEUE_ADD, params)
|
tts.speak(
|
||||||
|
pieces[currentPiece.getAndIncrement()],
|
||||||
|
TextToSpeech.QUEUE_ADD,
|
||||||
|
null,
|
||||||
|
"kiwixLastMessage"
|
||||||
|
)
|
||||||
currentPiece.getAndIncrement()
|
currentPiece.getAndIncrement()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user