The following code shows how to Use Intent to do Speech Recognize.
Register permission for RECORD_AUDIO
.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.java2s.myapplication3.app" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="java2s.com" android:theme="@style/AppTheme" > <activity android:name="com.java2s.myapplication3.app.MainActivity" android:label="java2s.com" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Main activity Java code
package com.java2s.myapplication3.app; /* w w w. ja v a2s.co m*/ import java.util.ArrayList; import android.app.Activity; import android.app.AlertDialog; import android.content.ActivityNotFoundException; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.speech.RecognizerIntent; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private static final int REQUEST_RECOGNIZE = 100; TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); tv = new TextView(this); setContentView(tv); Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Tell Me Your Name"); try { startActivityForResult(intent, REQUEST_RECOGNIZE); } catch (ActivityNotFoundException e) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Not Available"); builder.setMessage("There is currently no recognition software installed. Would you like to download one?"); builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //Download, for example, Google Voice Search Intent marketIntent = new Intent(Intent.ACTION_VIEW); marketIntent.setData(Uri.parse("market://details?id=com.google.android.voicesearch")); } }); builder.setNegativeButton("No", null); builder.create().show(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == REQUEST_RECOGNIZE && resultCode == Activity.RESULT_OK) { ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); StringBuilder sb = new StringBuilder(); for(String piece : matches) { sb.append(piece); sb.append('\n'); } tv.setText(sb.toString()); } else { Toast.makeText(this, "Operation Canceled", Toast.LENGTH_SHORT).show(); } } }