title: java.lang.RuntimeException: start failed at android.media.MediaRecorder.start(Native Method)
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 MediaRecorder start fail -2147483648. I Please tell me what is the problem in my code? Here is my Code.</p>
  
  <pre><code>public class incomingcall extends BroadcastReceiver {
  Context c;
  MediaRecorder recorder;
  public incomingcall() {
  }
  @Override
  public void onReceive(Context context, Intent intent) {
      c = context;
      try {
          PhoneStateChangeListener pscl = new PhoneStateChangeListener();
          TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
          tm.listen(pscl, PhoneStateListener.LISTEN_CALL_STATE);
      } catch (Exception e) {
          Log.e("", "", e);
      }
  }
  
  private class PhoneStateChangeListener extends PhoneStateListener {
      @Override
      public void onCallStateChanged(int state, String incomingNumber) {
          switch (state) {
              case TelephonyManager.CALL_STATE_RINGING:
                  Toast.makeText(c, "ring", Toast.LENGTH_SHORT).show();
                  break;
              case TelephonyManager.CALL_STATE_OFFHOOK:
                  startRecording();
                  Toast.makeText(c, "offhook", Toast.LENGTH_SHORT).show();
                  break;
              case TelephonyManager.CALL_STATE_IDLE:
                  stopRecording();
                  Toast.makeText(c, "idle", Toast.LENGTH_SHORT).show();
                  break;
          }
      }
  }
  private void startRecording() {
      try {
          recorder = new MediaRecorder();
          recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
          recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
          String file=c.getFilesDir().getAbsolutePath();
          file+="/sound.3gp";
          recorder.setOutputFile(file);
          recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
          recorder.prepare();
          recorder.start();
      } catch (IOException e) {
          Log.e("", "prepare() failed", e);
      }
  }
  private void stopRecording() {
      try {
          recorder.stop();
          recorder.release();
          recorder = null;
      } catch (Exception e) {
          Log.e("", "", e);
      }
   }
  }
  </code></pre>
  
  <p>Log</p>
  
  <pre><code>    07-20 15:33:47.867 18525-18525/in.pounkumar.callblocker E/MediaRecorder: start failed: -2147483648
  07-20 15:33:47.868 18525-18525/in.pounkumar.callblocker E/AndroidRuntime: FATAL EXCEPTION: main
                                                                            Process: in.pounkumar.callblocker, PID: 18525
                                                                            java.lang.RuntimeException: start failed.
                                                                                at android.media.MediaRecorder.start(Native Method)
                                                                                at in.pounkumar.callblocker.incomingcall.startRecording(incomingcall.java:73)
                                                                                at in.pounkumar.callblocker.incomingcall.access$100(incomingcall.java:20)
                                                                                at in.pounkumar.callblocker.incomingcall$PhoneStateChangeListener.onCallStateChanged(incomingcall.java:53)
                                                                                at android.telephony.PhoneStateListener$2.handleMessage(PhoneStateListener.java:295)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                at android.os.Looper.loop(Looper.java:148)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
  </code></pre>