title: Android Media Player: Start called in state 4 error(-38,0)
body: <p>This is the code am using to fetch a file name(.mp3) dynamically from some other class as am having many mp3 files in my assets folder:</p>
  
  <pre><code>playAudioButton.setOnClickListener(new OnClickListener() {
  
  
              @Override
              public void onClick(View v) 
              {
                  FileName audio=new FileName();
                  String audioName=audio.getAudioName(count).toString();
                  if(audioName=="NO Audio")
                  {
  
                      Toast.makeText(getApplicationContext(), "No Audio for this page", Toast.LENGTH_SHORT).show();
  
                  }
                  else
                  {
  
                      try {
                          afd=getAssets().openFd(audioName + ".mp3");
                          mp = new MediaPlayer();
                          mp.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
                          mp.prepareAsync();
                          mp.start();
  
                      } catch (IllegalArgumentException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      } catch (IllegalStateException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      } catch (IOException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      }
                  }
  
  
  
  
              }
          });
  
  
      }
  </code></pre>
  
  <p>Log Cat :</p>
  
  <pre><code>03-20 11:21:28.726: E/SpannableStringBuilder(4418): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
  03-20 11:21:28.726: E/SpannableStringBuilder(4418): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
  03-20 11:22:24.968: D/libEGL(4579): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
  03-20 11:22:24.976: D/libEGL(4579): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
  03-20 11:22:24.984: D/libEGL(4579): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
  03-20 11:22:25.070: D/OpenGLRenderer(4579): Enabling debug mode 0
  03-20 11:22:38.773: E/MediaPlayer(4579): start called in state 4
  03-20 11:22:38.773: E/MediaPlayer(4579): error (-38, 0)
  03-20 11:22:38.773: E/MediaPlayer(4579): Error (-38,0)
  </code></pre>
  
  <p>Points to be noted:
  1. I have checked similar threads on stack overflow the answer is using prepareAsync()
  2. I have used prepareAsync()</p>
  
  <p>Thanks in advance.</p>