如何从语音识别器中提取结果- Android



我发送使用语音识别器的意图

val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.US) 
putExtra(RecognizerIntent.EXTRA_PROMPT, R.string.speech_prompt)
}
startForResult.launch(intent)

但是我如何从中提取结果呢?我已经尝试了几种方法

private val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
result: ActivityResult ->
if (result.resultCode == Activity.RESULT_OK) {
Log.d("testing","resultData ${result.data}")//here I see HAS EXTRAS    
result.data.let {
inputField.setText(it?.getStringArrayExtra(RecognizerIntent.EXTRA_RESULTS)?.get(0))
//I've used this one and it doesn't work as well
inputField.setText(it?.getStringArrayExtra(SpeechRecognizer.RESULTS_RECOGNITION)?.get(0))
}
}
}

那么提取结果的正确方法是什么?

这是适合我的解决方案

private val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
result: ActivityResult ->
if (result.resultCode == Activity.RESULT_OK) {
myInput.setText(result.data?.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)?.first())
}
}

最新更新