語音輸入

每部 Wear OS 裝置都有麥克風,可讓使用者透過語音和裝置互動。互動方式可分為三種類型:

  • 錄音
  • 取得任意形式的語音輸入內容
  • 語音操作

錄音

在 Wear OS 裝置上錄音的運作方式和在手機上相同。請參閱 MediaRecorder 說明文件,進一步瞭解如何在 Android 裝置上錄音。您也可以前往 GitHub 參閱 Wear Speaker 的實作範例。

取得任意形式的語音輸入內容

呼叫系統內建的 Speech Recognizer 活動,取得使用者的語音輸入內容。使用語音輸入內容,即可傳送訊息或執行搜尋。

在應用程式中使用 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
        )
    }
}

語音操作

中國境內除了 Wear OS 應用程式之外,目前尚未支援語音指令和 Google 助理應用程式動作。詳情請參閱「中國版語音指令支援」。