2012-03-22 65 views
0

我正在研究android.speech程序包的工作原理,我發現語音識別器忽略了與意圖RecognizerIntent.ACTION_WEB_SEARCH一起使用的大多數附加信息。ACTION_WEB_SEARCH識別器識別器的可用選項

  • 如果我使用RecognizerIntent.EXTRA_LANGUAGE extra設置語言,則指定的語言將被忽略,但始終使用設備的默認語言。
  • 如果我使用RecognizerIntent.EXTRA_PROMPT設置文本,則不顯示此文本。
  • 如果我使用startActivityForResult方法開始語音識別的活性,則語音識別器調用onActivityResult,但第二個參數(resultCode)總是RESULT_CANCELED,第三個參數(數據Intent)總是null。這種行爲可能是由於這種意圖類型的目的是在網上執行搜索。出於同樣的原因,如果我使用RecognizerIntent.EXTRA_MAX_RESULTS來設置最大結果數,則將忽略指定的值。

我發現此行爲,但official documentation表示這些選項也可以用於ACTION_WEB_SEARCH意圖。

爲什麼語音識別系統的實際行爲與官方文檔中陳述的不同?

回答

1

我認爲你正在使用錯誤的操作。而不是ACTION_WEB_SEARCH,請使用ACTION_RECOGNIZE_SPEECH

如果這樣做,onActivityResult將按照您的預期行事,您的活動將控制對識別結果的解釋。

順便說一句,當您設置ACTION_WEB_SEARCH時,您將處理結果委託給Android。根據用戶的說法,Android可能會啓動一個Web瀏覽器,或者它可能會啓動一封電子郵件(如果用戶說「電子郵件」)。因此,您的活動沒有收到任何有用的信息是有道理的,但我認爲它應該考慮到RecognizerIntent.EXTRA_LANGUAGE。

+0

那麼,我已經使用了'ACTION_RECOGNIZE_SPEECH',並且驗證了所有附加工作。但我不明白爲什麼一些額外功能不適用於'ACTION_WEB_SEARCH':可能這種行爲的原因是這種意圖不會將結果返回給調用活動。 我很驚訝'EXTRA_LANGUAGE'額外不起作用:如果我設置了另一種語言而不是默認語言,「現在講話」對話框顯示指定的語言,但不能識別說出的單詞。相反,「EXTRA_LANGUAGE」額外的工作使用了「ACTION_RECOGNIZE_SPEECH」意圖。 – enzom83 2012-03-23 12:26:04

+0

我同意相同的語言字符串應該適用於這兩種意圖 – gregm 2012-03-23 13:13:45