すべての使用可能なオプション(つまり余分なもの)をテストするために、this exampleからインスピレーションを受けた簡単なアプリケーションを作成しました。私はEXTRA_PARTIAL_RESULTS
extraについて読んでいます。このオプションを有効にすると、音声認識に関連する部分的な結果がサーバから受信されるはずです。しかし、この余分をACTION_RECOGNIZE_SPEECH
インテントに追加すると、音声認識はもう機能しません。リストには結果が表示されません。音声認識を使用した部分的な結果
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == VOICE_RECOGNITION_REQUEST_CODE) {
switch(resultCode) {
case RESULT_OK:
Log.i(TAG, "RESULT_OK");
processResults(data);
break;
case RESULT_CANCELED:
Log.i(TAG, "RESULT_CANCELED");
break;
case RecognizerIntent.RESULT_AUDIO_ERROR:
Log.i(TAG, "RESULT_AUDIO_ERROR");
break;
case RecognizerIntent.RESULT_CLIENT_ERROR:
Log.i(TAG, "RESULT_CLIENT_ERROR");
break;
case RecognizerIntent.RESULT_NETWORK_ERROR:
Log.i(TAG, "RESULT_NETWORK_ERROR");
break;
case RecognizerIntent.RESULT_NO_MATCH:
Log.i(TAG, "RESULT_NO_MATCH");
break;
case RecognizerIntent.RESULT_SERVER_ERROR:
Log.i(TAG, "RESULT_SERVER_ERROR");
break;
default:
Log.i(TAG, "RESULT_UNKNOWN");
break;
}
}
Log.i(TAG, "Intent data: " + data);
super.onActivityResult(requestCode, resultCode, data);
}
private void processResults(Intent data) {
Log.i(TAG, "processResults()");
ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
// list of results
ListView listOfResults = (ListView)(findViewById(R.id.list_of_results));
listOfResults.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, matches));
// number of elements of above list
TextView resultsCount = (TextView)(findViewById(R.id.results_count));
resultsCount.setText(getString(R.string.results_count_label) + ": " + matches.size());
}
このオプションを有効にすると、結果リストの要素数が1になり、この1つの結果は空の文字列になります。この行動の理由は何ですか?
に追加詳細情報を 私は(アンドロイド2.3.5上)EXTRA_PARTIAL_RESULTS
オプションを有効にするために、次のコードを使用していました。
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, ...);
intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, ...);
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); // where VOICE_RECOGNITION_REQUEST_CODE is a "global variable"
ただし、このオプションを有効にする、ArrayList<String> matches
でprocessResults
方法は一つだけ空の要素を持っています。
EXTRA_PARTIAL_RESULTSの内側には? – gregm
"pratial results"オプションを有効または無効にするために使用できる定数文字列値( '" android.speech.extra.PARTIAL_RESULTS "')なので、ブール値 'true'を設定します。 – enzom83