2013-07-03
語音識別
2008年Google語音搜索在iphone平台上線,Android 1.5 將語音識別應用到搜索功能上。
手動輸入是目前主要與手機互動的方式,語音搜索宗旨是最大限度地改善人機交互的便捷性。
在玩游戲時,通過語音來控制操作,更顯得人性化,體驗更佳。
Android 中主要通過RecognizerIntent來實現語音識別。
RecognizerIntent包括的常量
ACTION_RECOGNIZE_SPEECH
ACTION_WEB_SEARCH
EXTRA_LANGUAGE
EXTRA_LANGUAGE_MODEL
EXTRA_MAX_RESULTS
EXTRA_PROMPT
EXTRA_RESULTS
LANGUAGE_MODEL_FREE_FORM
LANGUAGE_MODEL_WEB_SEARCH
RESULT_AUDIO_ERROR
RESULT_CLIENT_ERROR
RESULT_NETWORK_ERROR
RESULT_NO_MATCH
RESULT_SERVER_ERROR
// 打開語音識別
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, “開始語音");
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
在模擬器上找不到語音設備,會拋出異常ActivityNotFoundException。
示例:
點擊“開始使用語音識別”按鈕后,開始語音輸入,然后在onActivityResult方法中取得結果並顯示出來
protect void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {
ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
StringBuffer sb = new StringBuffer();
for(int i=0; i<results.size; i++) {
sb.append(results.get(i));
}
Toast.makeText(this, sb.toString(), Toast.LENGTH_LONG).show();
super.onActivityResult(requestCode, resultCode, data);
}
}