语音输入

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

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

录制音频

在 Wear OS 设备上录制音频的方式与在手机上相同。请参阅MediaRecorder 文档,了解有关在 Android 上录制音频的更多信息。您也可以在 Github 上查看Wear Speaker 示例中的示例实现。

获取自由格式语音输入

调用系统内置的语音识别活动,以获取用户的语音输入。使用语音输入发送消息或执行搜索。

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

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

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
        )
    }
}

语音操作

目前不支持语音操作和 Assistant 应用操作,除了在中国地区的 Wear OS 应用。请阅读有关中国地区的语音操作支持的更多信息。