public static final int VOICE_INPUT_REQUEST_CODE = 0;
private void voiceInput() {
try {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, getString(R.string.voicesearch_message));
startActivityForResult(intent, VOICE_INPUT_REQUEST_CODE);
} catch (final ActivityNotFoundException e) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.voicesearch_url))));
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
voiceOutput(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}
private void voiceOutput(int requestCode, int resultCode, Intent data) {
if ((requestCode == VOICE_INPUT_REQUEST_CODE && (resultCode == RESULT_OK))) {
String speakedString = "";
final ArrayList<String> speechToChar = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
// Google语音返回一个字符列表,可能性依次降低。第一个是最有可能的,所以选择第一个字符。
if (speechToChar.size() > 0) {
speakedString = speechToChar.get(0);
}
Log.d("TAG", "显示的语音:" + speakedString.trim());
}
}
<string name="voicesearch_url">market://details?id=com.google.android.voicesearch</string>
<string name="voicesearch_message">语音输入</string>