TextToSpeech不要读出第一个视频的名字



我有两个活动

  • MainActivity
  • PlayerActivity

目标是获取要发音的用户选择的视频的名称。用户可以一次选择一个视频或多个视频。

视频使用ExoPlayer播放,但TextToSpeech不讲第一个视频的名称,无论是选择的视频还是选择的第一个。另一方面,TextToSpeech在第二个视频和下面几个视频中表现良好。

任何建议都是欢迎和感激的,我昨天和今天早上花了一天的时间寻找解决方案。

private fun goToPlayer(theMvmt: String) {
val intent = Intent(this@GokyoActivity, PlayerActivity::class.java)
intent.putExtra("mvmt", theMvmt)
startActivity(intent)
}

在PlayerActivity中我初始化ExoPlayer和TextToSpeech:

整体变量:

var tts: TextToSpeech? = null

In onCreate:

// Initialize TextToSpeech
tts = TextToSpeech(this, this)

Then out of onCreate

TextToSpeech:

override fun onInit(status: Int) {
val myLanguage = Locale.getDefault().displayLanguage
if (androidAPILevel < 21) {
val params: HashMap<String, String> = HashMap()
params[TextToSpeech.Engine.KEY_PARAM_VOLUME] = musicVolume.toString() // change the 0.5 to any value from 0-1 (1 is default)
//            tts!!.speak("This is a volume test.", TextToSpeech.QUEUE_FLUSH, params)
} else { // android API level is 21 or higher...
val params = Bundle()
params.putFloat(
TextToSpeech.Engine.KEY_PARAM_VOLUME, musicVolume.toFloat()
) // change the 0.5f to any value from 0f-1f (1f is default)
//            tts!!.speak("This is a volume test.", TextToSpeech.QUEUE_FLUSH, params, null)
}
/* test de l'existence de la langue japonaise */
if (status == TextToSpeech.SUCCESS) {
/* set the language for tts */
val result = tts!!.setLanguage(Locale.FRENCH)
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
//                tts!!.language = Locale.FRENCH
Log.e("TTS", "*************** This Language is not supported ***************")
speakOut(« French not supported, install it please")
showTheToast(getString(R.string.NoJapaneseLanguage))
} else {
tts!!.setSpeechRate(1.0f)
}
} else {
showTheToast("TextToSpeech initialization failed!")
}
}

ExoPlayer:

private fun initializePlayer() {
player = SimpleExoPlayer.Builder(this)
.build()
.also { exoPlayer ->
viewBinding.videoView.player = exoPlayer
}

我对自己回答,我解决了我的问题。我决定在我的MainActivity中也使用TextToSpeech作为第一个视频,然后在PlayerActivity中跳转。这当然不是最优雅的解决方案,但它是有效的。

感谢您的阅读。

最新更新