音声入力を使用する(基本)

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){
    	//音声認識結果を取得
    	ArrayList candidates = 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