How to implement voice recognition
With your blank project setup, you should have an AndroidManifest file like the following<?xml version="1.0" encoding="utf-8"?> package="com.jameselsey" android:versionCode="1" android:versionName="1.0"> <application android:label="VoiceRecognitionDemo" android:icon="@drawable/icon" android:debuggable="true"> <activity android:name=".VoiceRecognitionDemo" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest> |
<?xml version="1.0" encoding="utf-8"?> android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingBottom="4dip" android:text="Click the button and start speaking" /> <Button android:id="@+id/speakButton" android:layout_width="fill_parent" android:onClick="speakButtonClicked" android:layout_height="wrap_content" android:text="Click Me!" /> <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" /> </LinearLayout> |
<?xml version="1.0" encoding="utf-8"?> android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="VoiceRecognition Demo!" /></LinearLayout> |
You should copy this into your activity :
package com.umer;import android.app.Activity;import android.os.Bundle;import android.content.Intent;import android.content.pm.PackageManager;import android.content.pm.ResolveInfo;import android.speech.RecognizerIntent;import android.view.View;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ListView;import java.util.ArrayList;import java.util.List;/** * A very simple application to handle Voice Recognition intents * and display the results */public class VoiceRecognitionDemo extends Activity{ private static final int REQUEST_CODE = 1234; private ListView wordsList; /** * Called with the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.voice_recog); Button speakButton = (Button) findViewById(R.id.speakButton); wordsList = (ListView) findViewById(R.id.list); // Disable button if no recognition service is present PackageManager pm = getPackageManager(); List<ResolveInfo> activities = pm.queryIntentActivities( new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); if (activities.size() == 0) { speakButton.setEnabled(false); speakButton.setText("Recognizer not present"); } } /** * Handle the action of the button being clicked */ public void speakButtonClicked(View v) { startVoiceRecognitionActivity(); } /** * Fire an intent to start the voice recognition activity. */ private void startVoiceRecognitionActivity() { 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 Demo..."); startActivityForResult(intent, REQUEST_CODE); } /** * Handle the results from the voice recognition activity. */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { // Populate the wordsList with the String values the recognition engine thought it heard ArrayList<String> matches = data.getStringArrayListExtra( RecognizerIntent.EXTRA_RESULTS); wordsList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, matches)); } super.onActivityResult(requestCode, resultCode, data); }} |
Text to speech simple example
package com.aviyehuda.android.text2speech;
import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
public class Text2SpeechTest extends Activity implements OnInitListener {
TextToSpeech talker;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
talker = new TextToSpeech(this, this);
}
public void say(String text2say){
talker.speak(text2say, TextToSpeech.QUEUE_FLUSH, null);
}
@Override
public void onInit(int status) {
say("Hello World");
}
@Override
public void onDestroy() {
if (talker != null) {
talker.stop();
talker.shutdown();
}
super.onDestroy();
}
}
No comments:
Post a Comment