Работа над разработкой плагина TTS Flutter с использованием Kotlin.
Одна проблема, с которой я столкнулся - это onInit не запускается.
package com.nannex.flutterplugin
import android.os.Bundle
import android.speech.tts.TextToSpeech
import android.util.Log
import java.util.*
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
import io.flutter.plugin.common.MethodChannel.Result
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.PluginRegistry.Registrar
class FlutterPlugin() : MethodCallHandler, TextToSpeech.OnInitListener {
var test: String = "not worked";
var tts: TextToSpeech? = null;
override fun onInit(status: Int) {
if (status != TextToSpeech.ERROR) {
tts!!.setLanguage(Locale.US)
test = "worked";
}
}
companion object {
@JvmStatic
fun registerWith(registrar: Registrar) {
val channel = MethodChannel(registrar.messenger(), "flutter_plugin")
channel.setMethodCallHandler(FlutterPlugin())
}
}
override fun onMethodCall(call: MethodCall, result: Result): Unit {
if (call.method.equals("getPlatformVersion")) {
result.success(test)
} else {
result.notImplemented()
}
}
fun speak(text: String) {
tts!!.speak(text, TextToSpeech.QUEUE_FLUSH, null, "")
}
}
Не уверен, что я здесь делаю неправильно. Может кто-то указать в правильном направлении, как получить OnIit для стрельбы? Насколько я понимаю, это должен быть обратный вызов OnInitListener, но, похоже, он не работает.
Я также использовал следующее в качестве руководства.
Пример Kotlin TTS