在 kotlin 协程中以同步方式调用异步方法 android
Calling asyn method in synchronous way in kotin coroutine android
我正在尝试 运行 一个 google ML Kit 函数,结果将在回调中,需要将该值作为 return 类型传递给它所在的方法在科特林执行。我尝试了一些 kotlin 协同程序的样本,但我仍然遗漏了一些东西并且它失败了。我还在学习 kotlin 和新手。
internal fun processImageSync(image: InputImage) : String{
var doctype = ""
val recognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
recognizer.process(image)
.addOnSuccessListener { visionText ->
var texttoscan = visionText.text.trim()
doctype = findstr(texttoscan)
}
.addOnFailureListener {
}
return doctype;
}
谁能帮我解决这个问题?
此致!
使用kotlinx-coroutines-play-services module
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.6.0")
}
使用扩展名Task.await
internal suspend fun processImageSync(image: InputImage): String {
val recognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
return recognizer.process(image)
.await()
.let { visionText -> findstr(visionText.text.trim()) }
}
我正在尝试 运行 一个 google ML Kit 函数,结果将在回调中,需要将该值作为 return 类型传递给它所在的方法在科特林执行。我尝试了一些 kotlin 协同程序的样本,但我仍然遗漏了一些东西并且它失败了。我还在学习 kotlin 和新手。
internal fun processImageSync(image: InputImage) : String{
var doctype = ""
val recognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
recognizer.process(image)
.addOnSuccessListener { visionText ->
var texttoscan = visionText.text.trim()
doctype = findstr(texttoscan)
}
.addOnFailureListener {
}
return doctype;
}
谁能帮我解决这个问题?
此致!
使用kotlinx-coroutines-play-services module
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.6.0")
}
使用扩展名Task.await
internal suspend fun processImageSync(image: InputImage): String {
val recognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
return recognizer.process(image)
.await()
.let { visionText -> findstr(visionText.text.trim()) }
}