我寫了一個小應用程序,允許用戶通過按鈕選擇他使用語音搜索的語言,而不是依靠用戶的語言偏好(有時您想用日語進行語音搜索,而無需將整個用戶界面切換爲日語)。調用android.speech.RecognizerIntent API導致連接錯誤對話框,在日誌中顯示'calling_package'警告
我正在測試我的HTC Desire/Android 2.1(Softbank-x06ht)上的應用程序。然而,當我打電話的聲音API,我得到一個「連接失敗」對話框[重試/取消],和logcat中顯示這樣的警告:
09-12 11:26:13.583: INFO/RecognitionService(545): ssfe url=http://www.google.com/m/voice-search
09-12 10:49:45.683: WARN/RecognitionService(545): required parameter 'calling_package' is missing in IntentAPI request
注意,我可以使用谷歌語音搜索應用程序,它的工作原理沒有問題。
根據API文檔http://developer.android.com/reference/android/speech/RecognizerIntent.html#EXTRA_CALLING_PACKAGE,calling_package參數不被開發人員使用。那麼,如果是這樣的話,爲什麼日誌會說它缺失?
我試圖自己提供參數,但它根本沒有改變結果。
private static final String TRIVOICE_CALLING_PACKAGE = "calling_package";
private void callSpeechWebSearch (String language) {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,
language);
intent.putExtra(TRIVOICE_CALLING_PACKAGE,
"org.filsa.trivoice");
//intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
try {
startActivity(intent);
} catch (ActivityNotFoundException anfe) {
makeToast("ANFE:" +anfe.getMessage());
}
}