Так что сейчас, когда я запускаю приложение, сначала запускается функция showLabel, а не инициализация TTS.Я всегда получаю сообщение об ошибке, что tts является нулевымЕсть ли лучший способ исправить это?Должен ли я переместить свой код на showLabel внутри onInit?У него тоже есть параметр.Цель будет firstObject
будет текст для TTS.Когда я пытаюсь добавить .speak внутри Oninit, он работает, но когда он снаружи, это приведет к нулевой ошибке.Любая помощь будет благодарна!
private var tts: TextToSpeech? = null
var firstObject = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_live_preview)
tts = TextToSpeech(this, this)
fun showLabel(labels: List<FirebaseVisionImageLabel>?) {
firstObject = labels!!.first().text
Log.d(TAG, firstObject)
tts!!.speak(firstObject, TextToSpeech.QUEUE_FLUSH, null, "")
}
override fun onInit(status: Int) {
if (status == TextToSpeech.SUCCESS) {
// set US English as language for tts
val result = tts!!.setLanguage(Locale.US)
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS","The Language specified is not supported!")
} else {
Log.d("TTS", "Initilization Successful")
tts!!.speak("This is a test", TextToSpeech.QUEUE_FLUSH, null, "") // works
cameraSource?.setMachineLearningFrameProcessor(ImageLabelingProcessor())
}
} else {
Log.e("TTS", "Initilization Failed!")
}
}