我发送使用语音识别器的意图
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())
}
}