準備
(なし)
デザイン
1. main.xml にボタン (button1) を配置します。
サンプルコード (Java)
package com.test.test01;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class Test01Activity extends Activity implements OnClickListener {
private Button b1;
private static int REQUEST_CODE = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1 = (Button)findViewById(R.id.button1);
b1.setOnClickListener(this);
}
public void onClick(View view) {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "喋ってね。");
startActivityForResult(intent, REQUEST_CODE);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
ArrayList ret = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
String sMsg = "";
for (int i = 0; i < ret.size(); i++) {
sMsg += ret.get(i) + "\n";
}
Toast.makeText(this, sMsg, Toast.LENGTH_LONG).show();
}
}
解説
INTENT を使用して、音声処理できるアプリケーションに処理を依頼しています。音声処理できるアプリケーションが複数あれば、アプリケーションの選択画面が表示されます。現状、音声処理ができるアプリは、Google 音声検索だけしかないため、すぐに音声処理が開始されます。
Google 音声検索からの戻り値は、onActivityResult イベントで処理します。これはメイン画面から呼び出したサブ画面がメイン画面に戻る時に呼び出されるイベントです。
尚、Google 音声検索はエミュレータ環境にはインストールされていませんので、実機で確認しています。


