title: Using SpeechRecognizer API directly - onResults() keeps returning null
body: <p>I have been trying to follow <a href="https://stackoverflow.com/questions/4559930/speechrecognizer-causes-anr-i-need-help-with-android-speech-api">the example in this post</a>.</p>
  
  <p>Since I am not trying to implement this in a service but rather in a standard activity, I haven't experienced the problems described in <a href="https://stackoverflow.com/questions/4559930/speechrecognizer-causes-anr-i-need-help-with-android-speech-api">the aforementioned post</a>.</p>
  
  <p>I keep getting, however, "No voice results" - as implemented in that post, when <strong>getStringArrayList(RecognizerIntent.EXTRA_RESULTS)</strong> returns null.</p>
  
  <p>Clearly, I am missing someting in what needs to be done <strong>in addition</strong> to </p>
  
  <pre><code>recognizer.setRecognitionListener(listener);
  recognizer.startListening(intent);    
  </code></pre>
  
  <p>What am I missing?</p>
  
  <p>Is it possible that in addition to startListening() I also need to startActivityForResult()? If so, I tried this already but it invoked the full Google's Voice Search activity (which is what I am trying to avoid, just as @vladimir.vivien wrote <a href="https://stackoverflow.com/questions/4975443/is-there-a-way-to-use-the-speechrecognizer-api-directly-for-speech-input">here</a>). This creates even more problems due to 2 recognizers running at the same time...</p>
  
  <p>At first I thought that what's missing is actual submission to Google's servers, but when I examine the LogCat output from the start of the speech recognition session till its end (see below), I see that it actually creates a TCP session with <a href="http://www.google.com/m/voice-search" rel="nofollow noreferrer">http://www.google.com/m/voice-search</a> .</p>
  
  <p>So the obvious question is what am I missing?</p>
  
  <pre><code>04-18 07:02:17.770: INFO/RecognitionController(623): startRecognition(#Intent;action=android.speech.action.RECOGNIZE_SPEECH;S.android.speech.extra.LANGUAGE_MODEL=free_form;S.android.speech.extra.PROMPT=LEARNSR;S.calling_package=com.example.learnsr.SrActivity;end)
  04-18 07:02:17.770: INFO/RecognitionController(623): State change: STARTING -&gt; STARTING
  04-18 07:02:17.780: INFO/AudioHardwareQSD(121): Routing audio to Speakerphone
  04-18 07:02:17.780: DEBUG/AudioHardwareQSD(121): Switching audio device to 
  04-18 07:02:17.780: DEBUG/AudioHardwareQSD(121): Speakerphone
  04-18 07:02:17.780: INFO/AudioHardwareQSD(121): AudioHardware PCM record is going to standby.
  04-18 07:02:17.780: INFO/AudioHardwareQSD(121): Routing audio to Speakerphone
  04-18 07:02:17.780: DEBUG/AudioHardwareQSD(121): Switching audio device to 
  04-18 07:02:17.780: DEBUG/AudioHardwareQSD(121): Speakerphone
  04-18 07:02:17.780: INFO/AudioHardwareQSD(121): AudioHardware PCM record is going to standby.
  04-18 07:02:17.780: INFO/AudioService(164):  AudioFocus  requestAudioFocus() from android.media.AudioManager@46036948
  04-18 07:02:17.780: DEBUG/AudioFlinger(121): setParameters(): io 3, keyvalue routing=262144;vr_mode=1, tid 155, calling tid 121
  04-18 07:02:17.790: INFO/AudioHardwareQSD(121): Routing audio to Speakerphone
  04-18 07:02:17.790: INFO/AudioHardwareQSD(121): do input routing device 40000
  04-18 07:02:17.790: INFO/AudioHardwareQSD(121): Routing audio to Speakerphone
  04-18 07:02:17.790: INFO/RecognitionController(623): State change: STARTING -&gt; RECOGNIZING
  04-18 07:02:17.790: INFO/ServerConnectorImpl(623): Starting TCP session, url=http://www.google.com/m/voice-search
  04-18 07:02:17.930: DEBUG/ServerConnectorImpl(623): Created session a7918495c042db1746d3e09514baf621
  04-18 07:02:17.930: INFO/ServerConnectorImpl(623): Creating TCP connection to 74.125.115.126:19294
  04-18 07:02:17.980: DEBUG/AudioHardwareQSD(121): Switching audio device to 
  04-18 07:02:17.980: DEBUG/AudioHardwareQSD(121): Speakerphone
  04-18 07:02:18.070: INFO/ServerConnectorImpl(623): startRecognize RecognitionParameters{session=a7918495c042db1746d3e09514baf621,request=1}
  04-18 07:02:18.390: INFO/RecognitionController(623): onReadyForSpeech, noise level:10.29969, snr:-0.42756215
  04-18 07:02:19.760: DEBUG/dalvikvm(659): GC_EXPLICIT freed 5907 objects / 353648 bytes in 67ms
  04-18 07:02:21.030: INFO/AudioHardwareQSD(121): AudioHardware pcm playback is going to standby.
  04-18 07:02:24.090: INFO/RecognitionController(623): onBeginningOfSpeech
  04-18 07:02:24.760: DEBUG/dalvikvm(669): GC_EXPLICIT freed 1141 objects / 74296 bytes in 48ms
  04-18 07:02:25.080: INFO/RecognitionController(623): onEndOfSpeech
  04-18 07:02:25.080: INFO/AudioService(164):  AudioFocus  abandonAudioFocus() from android.media.AudioManager@46036948
  04-18 07:02:25.140: INFO/AudioHardwareQSD(121): Routing audio to Speakerphone
  04-18 07:02:25.200: INFO/RecognitionController(623): State change: RECOGNIZING -&gt; RECOGNIZED
  04-18 07:02:25.200: INFO/RecognitionController(623): Final state: RECOGNIZED
  04-18 07:02:25.260: INFO/ServerConnectorImpl(623): ClientReport{session_id=a7918495c042db1746d3e09514baf621,request_id=1,application_id=intent-speech-api,client_perceived_request_status=0,request_ack_latency_ms=118,total_latency_ms=7122,user_perceived_latency_ms=116,network_type=1,endpoint_trigger_type=3,}
  04-18 07:02:25.260: INFO/AudioService(164):  AudioFocus  abandonAudioFocus() from android.media.AudioManager@46036948
  04-18 07:02:25.270: DEBUG/AudioHardwareQSD(121): Switching audio device to 
  04-18 07:02:25.270: DEBUG/AudioHardwareQSD(121): Speakerphone
  04-18 07:02:25.270: INFO/RecognitionController(623): State change: RECOGNIZED -&gt; PAUSED
  04-18 07:02:25.270: INFO/AudioService(164):  AudioFocus  abandonAudioFocus() from android.media.AudioManager@46036948
  04-18 07:02:25.270: INFO/ClientReportSender(623): Sending 1 client reports over HTTP
  04-18 07:02:25.280: INFO/AudioHardwareQSD(121): AudioHardware PCM record is going to standby.
  04-18 07:02:25.280: DEBUG/AudioFlinger(121): setParameters(): io 3, keyvalue routing=0, tid 155, calling tid 121
  04-18 07:02:25.280: INFO/AudioHardwareQSD(121): Routing audio to Speakerphone
  04-18 07:02:25.280: INFO/AudioHardwareQSD(121): Routing audio to Speakerphone
  04-18 07:02:25.280: DEBUG/AudioHardwareQSD(121): Switching audio device to 
  04-18 07:02:25.280: DEBUG/AudioHardwareQSD(121): Speakerphone
  04-18 07:02:25.280: INFO/AudioHardwareQSD(121): AudioHardware PCM record is going to standby.
  </code></pre>