RecognizerIntent クラスを使ってインテントを発行し、音声入力をする。
※音声認識機能を使用する際にはサーバに接続するために3GまたはWiFiが有効である必要がある。
”音声認識をする”というAction(ACTION_RECOGNIZE_SPEECH, ACTION_WEB_SEARCH)のインテントを発行し、onActivityResult で音声認識結果を受け取る。
・ACTION_RECOGNIZE_SPEECH…認識結果を文字列として取得する。
・ACTION_WEB_SEARCH…………..認識結果からWEB検索を行い、その結果が表示される。
●音声認識のインテントを発行する
// リクエストコード static final int REQUEST_CODE = 1; // 音声入力ボタン押下イベント public void onClick(View view){ try{ // インテント作成 Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); // free-form speech recognition intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); // 音声認識画面に表示させる文字列 intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "音声で入力します。"); // 認識結果の候補数 intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3); // インテント発行 startActivityForResult(intent, REQUEST_CODE); }catch(ActivityNotFoundException e){ Log.e("onClick()", "アクティビティが見つかりません"); } }
●音声認識結果を受け取り、入力エリアにセット
public void onActivityResult(int requestCode, int resultCode, Intent data){ if(requestCode == REQUEST_CODE && resultCode == RESULT_OK){ //音声認識結果を取得 ArrayListcandidates = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); if(candidates.size() > 0){ //第一候補を取得 strInputResult = candidates.get(0).toString(); } //認識結果を EditText にセット EditText edittxt = (EditText)findViewById(R.id.edittxt ); edittxt.setText(strInputResult); } super.onActivityResult(resultCode, resultCode, data); }
RecognizerIntent(API Level3-)
Ref.) Android Developers>RecognizerIntent
Ref.) Android Developers>RecognizerIntent