title: Android MediaPlayer prepare failed: status = 0x1
body: <p>I'm building an audio recorder that needs to play back the recorded sound. I'm running into a lot of trouble playing back the audio. I know that the file exists because I isolated it into a folder on my SD Card, but for some reason it can't play it back.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>public class RecorderEditActivity extends SherlockActivity implements
      DatabaseHelper.MetadataListener {
  
  private long position;
  
  private Button playButton = null;
  private TextView date = null;
  private EditText title = null;
  private EditText notes = null;
  private Button saveButton = null;
  
  private MediaPlayer mediaPlayer = null;
  private boolean isPlaying = false;
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  
      setContentView(R.layout.edit_item);
  
      position = getIntent().getExtras().getLong(DatabaseHelper.KEY_ROWID);
  
      playButton = (Button) findViewById(R.id.play);
      date = (TextView) findViewById(R.id.recording_date);
      title = (EditText) findViewById(R.id.edit_title);
      notes = (EditText) findViewById(R.id.edit_notes);
      saveButton = (Button) findViewById(R.id.save_edit_button);
  
      mediaPlayer = new MediaPlayer();
  
      DatabaseHelper.getInstance(getApplicationContext()).getMetadataAsync(
              position, this);
  
      playButton.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              if (!isPlaying) {
                  playButton.setText(R.string.stop_text);
                  try {
                      mediaPlayer = new MediaPlayer();
                      mediaPlayer
                              .setDataSource("sdcard/test/"
                                      + date.toString() + ".3gp");
                      mediaPlayer.prepare();
                      mediaPlayer.start();
                      mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                          @Override
                          public void onCompletion(MediaPlayer mp) {
                              mp.stop();
                          }
                      });
                  } catch (Exception e) {
                      Log.e(e.getClass().getName(), e.getMessage(), e);
                  }
              } else {
                  playButton.setText(R.string.play_text);
                  mediaPlayer.release();
              }
              isPlaying = !isPlaying;
          }
      });
  </code></pre>
  
  <p>Here are the errors from LogCat:</p>
  
  <pre><code>03-20 00:33:40.963: E/MediaPlayer(21268): error (1, -2147483648)
  03-20 00:33:40.963: E/java.io.IOException(21268): Prepare failed.: status=0x1
  03-20 00:33:40.963: E/java.io.IOException(21268): java.io.IOException: Prepare failed.: status=0x1
  03-20 00:33:40.963: E/java.io.IOException(21268):   at android.media.MediaPlayer.prepare(Native Method)
  03-20 00:33:40.963: E/java.io.IOException(21268):   at com.packagename.soundrecorder.RecorderEditActivity$1.onClick(RecorderEditActivity.java:56)
  03-20 00:33:40.963: E/java.io.IOException(21268):   at android.view.View.performClick(View.java:4204)
  03-20 00:33:40.963: E/java.io.IOException(21268):   at android.view.View$PerformClick.run(View.java:17355)
  03-20 00:33:40.963: E/java.io.IOException(21268):   at android.os.Handler.handleCallback(Handler.java:725)
  03-20 00:33:40.963: E/java.io.IOException(21268):   at android.os.Handler.dispatchMessage(Handler.java:92)
  03-20 00:33:40.963: E/java.io.IOException(21268):   at android.os.Looper.loop(Looper.java:137)
  03-20 00:33:40.963: E/java.io.IOException(21268):   at android.app.ActivityThread.main(ActivityThread.java:5041)
  03-20 00:33:40.963: E/java.io.IOException(21268):   at java.lang.reflect.Method.invokeNative(Native Method)
  03-20 00:33:40.963: E/java.io.IOException(21268):   at java.lang.reflect.Method.invoke(Method.java:511)
  03-20 00:33:40.963: E/java.io.IOException(21268):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
  03-20 00:33:40.963: E/java.io.IOException(21268):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
  03-20 00:33:40.963: E/java.io.IOException(21268):   at dalvik.system.NativeStart.main(Native Method)
  </code></pre>
  
  <p>Hopefully someone can help me interpret and solve this problem. I've done a ton of research and nothing I do helps.
  Thanks :)</p>