title: Android speech Recognition App Without Pop Up
body: <p>I'm currently looking into getting a career with JAVA and have decided to start by building an app.
  I have this code right here that I am using to trigger Speech Recognition. </p>
  
  <pre><code>public class MainActivity extends Activity implements OnClickListener{
  
  private static final int VR_REQUEST = 999;
  private ListView wordList;
  private final String LOG_TAG = "SpeechRepeatActivity";  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      Button speechBtn = (Button) findViewById(R.id.speech_btn);
      wordList = (ListView) findViewById (R.id.word_list);
      PackageManager packManager= getPackageManager();
      List&lt;ResolveInfo&gt; intActivities = packManager.queryIntentActivities
                      (new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
      if (intActivities.size() !=0){
          speechBtn.setOnClickListener(this);
      } else {
          speechBtn.setEnabled(false);
          Toast.makeText(this,"Oops - Speech Recognition Not Supported!", 
                                               Toast.LENGTH_LONG).show();
          }       
  }
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
  }
  public void onClick(View v){
     if (v.getId() == R.id.speech_btn) {
      listenToSpeech();
     }
  }
      private void listenToSpeech() {
      //start the speech recognition intent passing required data
      Intent listenIntent = 
                       new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
      //indicate package
      listenIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
                                          getClass().getPackage().getName());
      //message to display while listening
      listenIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say a word!");
      //set speech model
      listenIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
                                   RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
      //specify number of results to retrieve
      listenIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 10);
      //start listening
      startActivityForResult(listenIntent, VR_REQUEST);
  }
      @Override
      protected void onActivityResult(int requestCode, 
                                               int resultCode, Intent data) {
          //check speech recognition result 
          if (requestCode == VR_REQUEST &amp;&amp; resultCode == RESULT_OK) {
      //store the returned word list as an ArrayList
      ArrayList&lt;String&gt; suggestedWords = data.
                       getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
      //set the retrieved list to display in the ListView 
              //using an ArrayAdapter
      wordList.setAdapter(new ArrayAdapter&lt;String&gt; 
                                         (this, R.layout.word, suggestedWords));
  }
      //this detects which one the user clicks 
      wordList.setOnItemClickListener(new OnItemClickListener(){
          //click listener for items within list
          public void onItemClick(AdapterView&lt;?&gt; parent, 
                                             View view, int position, long id){
          //cast the 
          TextView wordView = (TextView)
          //retrive the chosen word
          String wordChosen= (String) wordView.
          //output for debugging
          Log.v(LOG_TAG, "chosen:" +wordChosen);
       }});
          super.onActivityResult(requestCode, resultCode, data);
    }
  }
  </code></pre>
  
  <p>In this app the user presses a button and gets displayed with the Google Voice Input screen where you can click a button (it actually goes automatically) and you can speak, it will stop and it will display it. I don't want that window to pop up at all though. Instead just let the user click the button and be able to speak and let the app stop and display the text automatically (it already does that).</p>
  
  <p>PLEASE! I understand that there are already answers on the form showing how to do this, in fact a user name JEEZ posted <a href="https://code.google.com/p/my-work-and-play-android/source/browse/trunk/android/speech/SpeechRecognizer/SpeechRecognizer/src/com/SpeechRecognizer/SpeechRecognizerActivity.java">some code right here</a>.</p>
  
  <p>I don't know if I understood where to put this in my project file. I AM A NOOB! If anyone could help clarify this I would GREATLY appreciate your help.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>package com.example.speechrecognizertest;
  
  import android.os.Bundle;
  import java.util.ArrayList;
  import java.util.List;
  import android.app.Activity;
  import android.content.Intent;
  import android.content.pm.PackageManager;
  import android.content.pm.ResolveInfo;
  import android.speech.RecognitionListener;
  import android.speech.RecognizerIntent;
  import android.speech.SpeechRecognizer;
  import android.util.Log;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.AdapterView;
  import android.widget.AdapterView.OnItemClickListener;
  import android.widget.ArrayAdapter;
  import android.widget.Button;
  import android.widget.ListView;
  import android.widget.Toast;
  import android.widget.TextView;
  import android.app.Activity;
  import android.view.Menu;
  
  public class MainActivity extends Activity {
  
  private static final int VR_REQUEST = 999;
  public static final String TAG = null;
  private ListView wordList;
  private final String LOG_TAG = "SpeechRepeatActivity";
  private SpeechRecognizer mSpeechRecognizer;
  private Intent mSpeechRecognizerIntent; 
  private boolean mIslistening; 
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      Button speechBtn = (Button) findViewById(R.id.speech_btn);
      wordList = (ListView) findViewById(R.id.word_list);
      PackageManager packManager = getPackageManager();
      List&lt;ResolveInfo&gt; intActivities = packManager.queryIntentActivities(
              new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
      mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
      mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
      mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                                       RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
      mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
                                       this.getPackageName());
      if (!mIslistening)
      {
          mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
      } else {
          speechBtn.setEnabled(false);
          Toast.makeText(this, "Oops - Speech Recognition Not Supported!",
                  Toast.LENGTH_LONG).show();
      }
  }
  
  
  @Override
  protected void onDestroy() {
      // TODO Auto-generated method stub
      super.onDestroy();
  }
  
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
  }
  
  
  
  protected class SpeechRecognitionListener implements RecognitionListener
  {
  
      @Override
      public void onBeginningOfSpeech()
      {               
          //Log.d(TAG, "onBeginingOfSpeech"); 
      }
  
      @Override
      public void onBufferReceived(byte[] buffer)
      {
  
      }
  
      @Override
      public void onEndOfSpeech()
      {
          //Log.d(TAG, "onEndOfSpeech");
       }
  
      @Override
      public void onError(int error)
      {
           mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
  
          //Log.d(TAG, "error = " + error);
      }
  
      @Override
      public void onEvent(int eventType, Bundle params)
      {
  
      }
  
      @Override
      public void onPartialResults(Bundle partialResults)
      {
  
      }
  
      @Override
      public void onReadyForSpeech(Bundle params)
      {
          Log.d(TAG, "OnReadyForSpeech"); //$NON-NLS-1$
      }
  
      @Override
      public void onResults(Bundle results)
      {
          //Log.d(TAG, "onResults"); //$NON-NLS-1$
          ArrayList&lt;String&gt; suggestedWords =      results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
          // matches are the return values of speech recognition engine
          // Use these values for whatever you wish to do
  
          wordList.setAdapter(new ArrayAdapter&lt;String&gt;(this, R.layout.word, suggestedWords));
  
  
  
      }
  
      @Override
      public void onRmsChanged(float rmsdB)
      {
  
      }
  
  }
  </code></pre>