title: Android Media Recording: java.lang.RuntimeException: start failed
body: <p>I am working on records a phone calls. When i start a record a phone call then it's unfortunately stop. &amp; it's gives error <strong>MediaRecorder start fail -2147483648</strong>. I refer this answer <a href="https://stackoverflow.com/questions/13933065/mediarecorder-start-fail-2147483648">link</a>. But i don't understand. Please tell me what is the problem in my code? Here is my Code. </p>
  
  <pre><code>public class IncomingCall extends BroadcastReceiver {
  
  Context pcontext;
  private static MediaRecorder recorder;
  private boolean recordedStart = false;
  
  @SuppressWarnings("unchecked")
  public void onReceive(Context context, Intent intent) {
      pcontext = context;
      recorder = new MediaRecorder();
  
  try {
              TelephonyManager tmgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
              MyPhoneStateListener PhoneListener = new MyPhoneStateListener();
              tmgr.listen(PhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
  
      } catch (Exception e) {
          Log.e("Phone Receive Error", " " + e);
      }
  
  }
  
  private class MyPhoneStateListener extends PhoneStateListener {
      public void onCallStateChanged(int state, String incomingNumber) {
  
  
  
          switch (state) {
          case TelephonyManager.CALL_STATE_RINGING:
              Log.e("MyPhoneListener",state+"   incoming no:"+incomingNumber);
              Log.e("CALL_STATE_RINGING", "CALL_STATE_RINGING");
  
              break;
  
          case TelephonyManager.CALL_STATE_OFFHOOK:
  
              recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
              recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
              recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
              recorder.setOutputFile(Environment.getExternalStorageDirectory()+"/MyRecorder.mp3");
              Log.e("Path", ""+Environment.getExternalStorageDirectory()+"/MyRecorder.mp3");
              try {
                  recorder.prepare();
                  recorder.start();
                  recordedStart = true;
                  Log.e("Start", "Recorder Start");
              } catch (IllegalStateException | IOException e) {
                  // TODO Auto-generated catch block
                  Log.e("Error", ""+e);
              }
  
              break;
          case TelephonyManager.CALL_STATE_IDLE:
              Log.e("CALL_STATE_IDLE", "CALL_STATE_IDLE");
              if (recordedStart == true) {
                  recorder.stop();
                  recorder.release();
                  recordedStart = false;
                  Log.e("Stop", "Recorder Stop");
              }
              break;
          }
      }
  }
  </code></pre>
  
  <p>}</p>
  
  <p>Logcat Error</p>
  
  <pre><code>05-05 10:57:23.771: E/MediaRecorder(12812): start failed: -2147483648
  05-05 10:57:23.771: D/AndroidRuntime(12812): Shutting down VM
  05-05 10:57:23.771: W/dalvikvm(12812): threadid=1: thread exiting with uncaught exception (group=0x416bdd40)
  05-05 10:57:23.774: E/AndroidRuntime(12812): FATAL EXCEPTION: main
  05-05 10:57:23.774: E/AndroidRuntime(12812): Process: web.revolution.autocallanswer, PID: 12812
  05-05 10:57:23.774: E/AndroidRuntime(12812): java.lang.RuntimeException: start failed.
  05-05 10:57:23.774: E/AndroidRuntime(12812):    at android.media.MediaRecorder.start(Native Method)
  05-05 10:57:23.774: E/AndroidRuntime(12812):    at web.revolution.autocallanswer.IncomingCall$MyPhoneStateListener.onCallStateChanged(IncomingCall.java:98)
  05-05 10:57:23.774: E/AndroidRuntime(12812):    at android.telephony.PhoneStateListener$2.handleMessage(PhoneStateListener.java:389)
  05-05 10:57:23.774: E/AndroidRuntime(12812):    at android.os.Handler.dispatchMessage(Handler.java:102)
  05-05 10:57:23.774: E/AndroidRuntime(12812):    at android.os.Looper.loop(Looper.java:136)
  05-05 10:57:23.774: E/AndroidRuntime(12812):    at android.app.ActivityThread.main(ActivityThread.java:5102)
  05-05 10:57:23.774: E/AndroidRuntime(12812):    at java.lang.reflect.Method.invokeNative(Native Method)
  05-05 10:57:23.774: E/AndroidRuntime(12812):    at java.lang.reflect.Method.invoke(Method.java:515)
  05-05 10:57:23.774: E/AndroidRuntime(12812):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
  05-05 10:57:23.774: E/AndroidRuntime(12812):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
  05-05 10:57:23.774: E/AndroidRuntime(12812):    at dalvik.system.NativeStart.main(Native Method)
  05-05 10:57:25.586: I/Process(12812): Sending signal. PID: 12812 SIG: 9
  05-05 10:57:27.052: E/CALL_STATE_IDLE(13255): CALL_STATE_IDLE
  </code></pre>