title: Error ERROR_RECOGNIZER_BUSY with offline speech recognition
body: <p>I have made research on google offline speech recognition. but it works fine in google nexus 5(OS:-4.4) but same build if I implement in Samsung galaxy s5(OS:-5.0) it is not recognizing and it is showing this error:</p>
  
  <blockquote>
    <p>8- ERROR_RECOGNIZER_BUSY.</p>
  </blockquote>
  
  <p>Below is my code. By keeping this link as reference I have made a changes <a href="http://www.truiton.com/2014/06/android-speech-recognition-without-dialog-custom-activity/" rel="nofollow">http://www.truiton.com/2014/06/android-speech-recognition-without-dialog-custom-activity/</a></p>
  
  <p>Without internet voice must recognize. I have worked on Pocket sphinx but it take lot of side voice so client have rejected it.</p>
  
  <pre><code>public class VoiceRecognitionActivity extends Activity implements RecognitionListener {
  
      private TextView returnedText;
      private static ProgressBar progressBar;
      private static SpeechRecognizer speech = null;
      private static Intent recognizerIntent;
      private String LOG_TAG = "VoiceRecognitionActivity";
      private Button button1;
      Activity activity = VoiceRecognitionActivity.this;
      private TextView textView2;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          returnedText = (TextView) findViewById(R.id.textView1);
          textView2 = (TextView) findViewById(R.id.textView2);
          progressBar = (ProgressBar) findViewById(R.id.progressBar1);
          button1 = (Button) findViewById(R.id.button1);
  
           getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
      //  toggleButton = (ToggleButton) findViewById(R.id.toggleButton1);
  
           PackageManager pm = getPackageManager();
           List&lt;ResolveInfo&gt; activities = pm.queryIntentActivities( new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
           if (activities.size() != 0) 
           {
               createSpeechAgain(VoiceRecognitionActivity.this);
           } 
           else 
           {
               textView2.setText("Recognizer_not_present");
           }
  
  
  
  
          button1.setOnClickListener(new OnClickListener() {          
              @Override
              public void onClick(View arg0) {
  
                  speech.stopListening();
                  speech.destroy();
  
                  createSpeechAgain(VoiceRecognitionActivity.this);
              }
          });
  
      }
  
      private  void createSpeechAgain(VoiceRecognitionActivity voiceRecognitionActivity) {
          progressBar.setVisibility(View.INVISIBLE);
          speech = SpeechRecognizer.createSpeechRecognizer(voiceRecognitionActivity);
          speech.setRecognitionListener(voiceRecognitionActivity);
          recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
          recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en-US");
          recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, voiceRecognitionActivity.getPackageName());
          recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
          recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);
          //recognizerIntent.putExtra(RecognizerIntent.EXTRA_PREFER_OFFLINE, Boolean.FALSE);
          recognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, 20000);
          recognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 20000);
          // EXTRA_PREFER_OFFLINE
  
          progressBar.setVisibility(View.VISIBLE);
          progressBar.setIndeterminate(true);
          speech.startListening(recognizerIntent);
  
      }
  
      @Override
      public void onResume() {
          super.onResume();
      }
  
      @Override
      protected void onPause() {
          super.onPause();
          /*if (speech != null) {
              speech.destroy();
              Log.i(LOG_TAG, "destroy");
          }*/
  
      }
  
      @Override
      public void onBeginningOfSpeech() {
          Log.i(LOG_TAG, "onBeginningOfSpeech");
          progressBar.setIndeterminate(false);
          progressBar.setMax(10);
      }
  
      @Override
      public void onBufferReceived(byte[] buffer) {
          Log.i(LOG_TAG, "onBufferReceived: " + buffer);
      }
  
      @Override
      public void onEndOfSpeech() {
          Log.i(LOG_TAG, "onEndOfSpeech");
          progressBar.setIndeterminate(false);
          progressBar.setVisibility(View.INVISIBLE);
          speech.stopListening();
      }
  
      @Override
      public void onError(int errorCode) {
  
  
          String errorMessage = getErrorText(errorCode);
          Log.d(LOG_TAG, "FAILED " + errorMessage);
          textView2.setText(errorMessage);
  
  
      }
  
      @Override
      public void onEvent(int arg0, Bundle arg1) {
          Log.i(LOG_TAG, "onEvent");
      }
  
      @Override
      public void onPartialResults(Bundle arg0) {
          Log.i(LOG_TAG, "onPartialResults");
      }
  
      @Override
      public void onReadyForSpeech(Bundle arg0) {
          Log.i(LOG_TAG, "onReadyForSpeech");
      }
  
      @Override
      public void onResults(Bundle results) {
          Log.i(LOG_TAG, "onResults");
          ArrayList&lt;String&gt; matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
          String text = "";
          for (String result : matches)
              text += result + "\n";
  
          returnedText.setText(text);
          Log.v(LOG_TAG, "onResults---&gt; " + text);
          progressBar.setVisibility(View.VISIBLE);
          progressBar.setIndeterminate(true);
          speech.startListening(recognizerIntent);
  
      }
  
      @Override
      public void onRmsChanged(float rmsdB) {
          //Log.i(LOG_TAG, "onRmsChanged: " + rmsdB);
          progressBar.setProgress((int) rmsdB);
      }
  
      public String getErrorText(int errorCode) {
          String message;
          switch (errorCode) {
          case SpeechRecognizer.ERROR_AUDIO:
              message = "Audio recording error";
              Log.v("LOG_TAG", message);
  
              progressBar.setVisibility(View.VISIBLE);
              progressBar.setIndeterminate(true);
              speech.startListening(recognizerIntent);
  
              break;
          case SpeechRecognizer.ERROR_CLIENT:
              message = "Client side error";
              Log.v("LOG_TAG", message);
  
              progressBar.setVisibility(View.VISIBLE);
              progressBar.setIndeterminate(true);
              speech.startListening(recognizerIntent);
  
              break;
          case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS:
              message = "Insufficient permissions";
  
              Log.v("LOG_TAG", message);
  
              progressBar.setVisibility(View.VISIBLE);
              progressBar.setIndeterminate(true);
              speech.startListening(recognizerIntent);
  
              break;
          case SpeechRecognizer.ERROR_NETWORK:
              message = "Network error";
              Log.v("LOG_TAG", message);
              break;
          case SpeechRecognizer.ERROR_NETWORK_TIMEOUT:
              message = "Network timeout";
              Log.v("LOG_TAG", message);
              break;
          case SpeechRecognizer.ERROR_NO_MATCH:
              message = "No match";
              Log.v("LOG_TAG", message);
  
              progressBar.setVisibility(View.VISIBLE);
              progressBar.setIndeterminate(true);
              speech.startListening(recognizerIntent);
  
              break;
          case SpeechRecognizer.ERROR_RECOGNIZER_BUSY:
              message = "RecognitionService busy";
  
              Log.v("LOG_TAG", message);
              speech.stopListening();
              speech.destroy();
  
              createSpeechAgain(VoiceRecognitionActivity.this);
  
              break;
          case SpeechRecognizer.ERROR_SERVER:
              message = "error from server";
              Log.v("LOG_TAG", message);
              break;
          case SpeechRecognizer.ERROR_SPEECH_TIMEOUT:
              message = "No speech input";
              Log.v("LOG_TAG", message);
  
  
              progressBar.setVisibility(View.VISIBLE);
              progressBar.setIndeterminate(true);
              speech.stopListening();
              speech.destroy();
  
              createSpeechAgain(VoiceRecognitionActivity.this);
  
              break;
          default:
              message = "Didn't understand, please try again.";
              break;
          }
          return message;
      }
     }
  </code></pre>
  
  <p>Xml :-</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical" &gt;
  
      &lt;ImageView
          android:id="@+id/imageView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentBottom="true"
          android:layout_centerHorizontal="true"
          android:src="@drawable/ic_launcher" /&gt;
  
      &lt;ProgressBar
          android:id="@+id/progressBar1"
          style="?android:attr/progressBarStyleHorizontal"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_below="@+id/toggleButton1"
          android:layout_marginTop="28dp"
          android:paddingLeft="10dp"
          android:paddingRight="10dp" /&gt;
  
      &lt;TextView
          android:id="@+id/textView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_below="@+id/progressBar1"
          android:layout_centerHorizontal="true"
          android:layout_marginTop="47dp" /&gt;
  
      &lt;Button
          android:id="@+id/button1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_above="@+id/imageView1"
          android:layout_alignLeft="@+id/imageView1"
          android:text="Restart" /&gt;
  
      &lt;TextView
          android:id="@+id/textView2"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_above="@+id/button1"
          android:layout_centerHorizontal="true"
          android:layout_marginBottom="19dp"
          android:text="" /&gt;
  
      &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p>AndroidManifest.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.offlinegooglespeechtotext"
      android:versionCode="1"
      android:versionName="1.0" &gt;
  
      &lt;uses-sdk
          android:minSdkVersion="19"
          android:targetSdkVersion="19" /&gt;
  
      &lt;uses-permission android:name="android.permission.RECORD_AUDIO" /&gt;
  
      &lt;application
          android:allowBackup="true"
          android:icon="@drawable/ic_launcher"
          android:label="@string/app_name"
          android:theme="@style/AppTheme" &gt;
          &lt;activity
              android:name=".VoiceRecognitionActivity"
              android:label="@string/app_name" &gt;
              &lt;intent-filter&gt;
                  &lt;action android:name="android.intent.action.MAIN" /&gt;
  
                  &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
              &lt;/intent-filter&gt;
          &lt;/activity&gt;
      &lt;/application&gt;
  
  &lt;/manifest&gt;
  </code></pre>
  
  <p>Logcat:-</p>
  
  <pre><code>    09-30 18:05:54.732: D/ResourcesManager(3941): creating new AssetManager and set to /data/app/com.example.offlinegooglespeechtotext-2/base.apk
  09-30 18:05:54.772: V/BitmapFactory(3941): DecodeImagePath(decodeResourceStream3) : res/drawable-xxhdpi-v4/sym_def_app_icon.png
  09-30 18:05:54.772: V/BitmapFactory(3941): DecodeImagePath(decodeResourceStream3) : res/drawable-xxhdpi/ic_launcher.png
  09-30 18:05:54.787: V/BitmapFactory(3941): DecodeImagePath(decodeResourceStream3) : res/drawable-xxhdpi-v4/ic_ab_back_holo_dark_am.png
  09-30 18:05:54.797: V/BitmapFactory(3941): DecodeImagePath(decodeResourceStream3) : res/drawable-xxhdpi-v4/sym_def_app_icon.png
  09-30 18:05:54.817: D/Activity(3941): performCreate Call secproduct feature valuefalse
  09-30 18:05:54.817: D/Activity(3941): performCreate Call debug elastic valuetrue
  09-30 18:05:54.827: D/OpenGLRenderer(3941): Render dirty regions requested: true
  09-30 18:05:54.867: I/(3941): PLATFORM VERSION : JB-MR-2
  09-30 18:05:54.867: I/OpenGLRenderer(3941): Initialized EGL, version 1.4
  09-30 18:05:54.877: I/OpenGLRenderer(3941): HWUI protection enabled for context ,  &amp;this =0xb39090d8 ,&amp;mEglDisplay = 1 , &amp;mEglConfig = -1282088012 
  09-30 18:05:54.887: D/OpenGLRenderer(3941): Enabling debug mode 0
  09-30 18:05:54.957: V/LOG_TAG(3941): No match
  09-30 18:05:54.957: D/VoiceRecognitionActivity(3941): FAILED No match
  09-30 18:05:54.982: I/Timeline(3941): Timeline: Activity_idle id: android.os.BinderProxy@24862afe time:5837375
  09-30 18:05:55.607: I/VoiceRecognitionActivity(3941): onReadyForSpeech
  09-30 18:05:55.947: I/VoiceRecognitionActivity(3941): onBeginningOfSpeech
  09-30 18:05:57.252: I/VoiceRecognitionActivity(3941): onEndOfSpeech
  09-30 18:05:57.322: V/LOG_TAG(3941): No match
  09-30 18:05:57.322: D/VoiceRecognitionActivity(3941): FAILED No match
  09-30 18:05:57.332: V/LOG_TAG(3941): No match
  09-30 18:05:57.332: D/VoiceRecognitionActivity(3941): FAILED No match
  09-30 18:05:57.347: V/LOG_TAG(3941): No match
  09-30 18:05:57.347: D/VoiceRecognitionActivity(3941): FAILED No match
  09-30 18:05:57.367: V/LOG_TAG(3941): RecognitionService busy
  09-30 18:05:57.392: D/VoiceRecognitionActivity(3941): FAILED RecognitionService busy
  09-30 18:05:57.392: E/SpeechRecognizer(3941): not connected to the recognition service
  09-30 18:05:58.232: I/VoiceRecognitionActivity(3941): onReadyForSpeech
  09-30 18:06:03.287: V/LOG_TAG(3941): No speech input
  09-30 18:06:03.302: D/VoiceRecognitionActivity(3941): FAILED No speech input
  09-30 18:06:03.302: E/SpeechRecognizer(3941): not connected to the recognition service
  </code></pre>