语音输入

每个 Wear OS 设备都配有麦克风,因此用户可以使用语音与设备互动。这些互动可以分为三种类型:

  • 录音
  • 获取自由格式的语音输入
  • 语音操作

录音

在 Wear OS 设备上录音的方式与在手机上录音相同。如需详细了解如何在 Android 上录音,请参阅 MediaRecorder 文档。您还可以在 GitHub 上查看 Wear 扬声器示例中的实现示例。

获取自由格式的语音输入

调用系统的内置语音识别程序 activity 来获取用户的语音输入。使用语音输入发送消息或执行搜索。

在您的应用中,使用 ACTION_RECOGNIZE_SPEECH 操作调用 startActivityForResult()。这将启动语音识别 activity,然后您可以在 onActivityResult() 中处理结果。

以下代码示例展示了如何启动和处理语音识别 activity。

var textForVoiceInput by remember { mutableStateOf("") }

val voiceLauncher =
    rememberLauncherForActivityResult
(
       
ActivityResultContracts.StartActivityForResult()
   
) { activityResult ->
       
// This is where you process the intent and extract the speech text from the intent.
        activityResult
.data?.let { data ->
           
val results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)
            textForVoiceInput
= results?.get(0) ?: "None"
       
}
   
}

val scrollState = rememberScrollState()

ScreenScaffold(scrollState = scrollState) {
   
// rest of implementation here
   
// ...
   
Column(
       
// rest of implementation here
       
// ...

       
// Create an intent that can start the Speech Recognizer activity
       
val voiceIntent: Intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
            putExtra
(
               
RecognizerIntent.EXTRA_LANGUAGE_MODEL,
               
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM
           
)

            putExtra
(
               
RecognizerIntent.EXTRA_PROMPT,
                stringResource
(R.string.voice_text_entry_label)
           
)
       
}
       
// Invoke the process from a chip
       
Chip(
            onClick
= {
                voiceLauncher
.launch(voiceIntent)
           
},
            label
= stringResource(R.string.voice_input_label),
            secondaryLabel
= textForVoiceInput
       
)
   
}
}

语音操作

目前不支持语音操作以及与应用有关的 Google 助理 Action,只有中国境内的 Wear OS 应用除外。详细了解中国的语音操作支持