アンドロイドのあれこれ
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
RecognizerIntent、アプリから音声認識する
音声認識するための簡単なアプリを紹介します。
MainActivity.java
/res/layout/activity_main.xml
MainActivity.java
public class MainActivity extends Activity {
private static final int REQUEST_CODE = 1;
private ListView wordsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button speakButton = (Button) findViewById(R.id.speakButton);
wordsList = (ListView) findViewById(R.id.list);
// 対応する音声認識のサービスがない場合はボタンを無効に
PackageManager pm = getPackageManager();
Listactivities = pm.queryIntentActivities(
new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
if (activities.size() == 0) {
speakButton.setEnabled(false);
speakButton.setText("Recognizer not present");
}
}
public void speakButtonClicked(View v) {
//音声認識へインテントを送信
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Voice recognition test...");
startActivityForResult(intent, REQUEST_CODE);
}
/**
* 音声認識からの結果を受け取る
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
// 音声認識のエンジンからのいくつかの結果
ArrayListresults = data.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS);
// 認識結果を表示
wordsList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
results));
}
super.onActivityResult(requestCode, resultCode, data);
}
}
/res/layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button android:id="@+id/speakButton"
android:layout_width="fill_parent"
android:onClick="speakButtonClicked"
android:layout_height="wrap_content"
android:text="Speak!" />
<ListView android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1" />
</LinearLayout>
COMMENT