Note that there are some explanatory texts on larger screens.

plurals
  1. PORuntimeException: start failed in AudioRecording
    text
    copied!<p>Ham doing audio recording in my project. The problem is ham getting runtime exception in my project.</p> <pre><code> 12-02 14:58:47.145: E/AndroidRuntime(22802): FATAL EXCEPTION: main 12-02 14:58:47.145: E/AndroidRuntime(22802): java.lang.RuntimeException: start failed. 12-02 14:58:47.145: E/AndroidRuntime(22802): at android.media.MediaRecorder.start(Native Method) 12-02 14:58:47.145: E/AndroidRuntime(22802): at com.android.audio.AudioRecordActivity.startRecording(AudioRecordActivity.java:80) 12-02 14:58:47.145: E/AndroidRuntime(22802): at com.android.audio.AudioRecordActivity.access$1(AudioRecordActivity.java:67) 12-02 14:58:47.145: E/AndroidRuntime(22802): at com.android.audio.AudioRecordActivity$3.onClick(AudioRecordActivity.java:138) 12-02 14:58:47.145: E/AndroidRuntime(22802): at android.view.View.performClick(View.java:3460) 12-02 14:58:47.145: E/AndroidRuntime(22802): at android.view.View$PerformClick.run(View.java:13955) 12-02 14:58:47.145: E/AndroidRuntime(22802): at android.os.Handler.handleCallback(Handler.java:605) 12-02 14:58:47.145: E/AndroidRuntime(22802): at android.os.Handler.dispatchMessage(Handler.java:92) 12-02 14:58:47.145: E/AndroidRuntime(22802): at android.os.Looper.loop(Looper.java:137) 12-02 14:58:47.145: E/AndroidRuntime(22802): at android.app.ActivityThread.main(ActivityThread.java:4340) 12-02 14:58:47.145: E/AndroidRuntime(22802): at java.lang.reflect.Method.invokeNative(Native Method) 12-02 14:58:47.145: E/AndroidRuntime(22802): at java.lang.reflect.Method.invoke(Method.java:511) 12-02 14:58:47.145: E/AndroidRuntime(22802): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 12-02 14:58:47.145: E/AndroidRuntime(22802): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 12-02 14:58:47.145: E/AndroidRuntime(22802): at dalvik.system.NativeStart.main(Native Method) </code></pre> <p>when I debug and I'm getting the error in this particular line of code: </p> <p>recorder.start();</p> <p>My source code is as follows</p> <pre><code> package com.android.audio; import java.io.BufferedInputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import org.apache.http.util.ByteArrayBuffer; import android.app.Activity; import android.app.AlertDialog; import android.content.ContentValues; import android.content.DialogInterface; import android.content.Intent; import android.media.MediaRecorder; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.util.Log; import android.view.View; import android.widget.Button; public class AudioRecordActivity extends Activity { private static final String AUDIO_RECORDER_FILE_EXT_3GP = ".3gp"; private static final String AUDIO_RECORDER_FILE_EXT_MP4 = ".mp4"; private static final String AUDIO_RECORDER_FOLDER = "AudioRecorder"; File file; private MediaRecorder recorder = null; private int currentFormat = 0; private int output_formats[] = { MediaRecorder.OutputFormat.MPEG_4, MediaRecorder.OutputFormat.THREE_GPP }; private String file_exts[] = { AUDIO_RECORDER_FILE_EXT_MP4, AUDIO_RECORDER_FILE_EXT_3GP }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setButtonHandlers(); enableButtons(false); setFormatButtonCaption(); } private void setButtonHandlers() { ((Button)findViewById(R.id.btnStart)).setOnClickListener(btnClick); ((Button)findViewById(R.id.btnStop)).setOnClickListener(btnClick); ((Button)findViewById(R.id.btnFormat)).setOnClickListener(btnClick); } private void enableButton(int id,boolean isEnable){ ((Button)findViewById(id)).setEnabled(isEnable); } private void enableButtons(boolean isRecording) { enableButton(R.id.btnStart,!isRecording); enableButton(R.id.btnFormat,!isRecording); enableButton(R.id.btnStop,isRecording); } private void setFormatButtonCaption(){ ((Button)findViewById(R.id.btnFormat)).setText(getString(R.string.audio_format) + " (" + file_exts[currentFormat] + ")"); } private String getFilename(){ String filepath = Environment.getExternalStorageDirectory().getPath(); file = new File(filepath,AUDIO_RECORDER_FOLDER); if(!file.exists()){ file.mkdirs(); } return (file.getAbsolutePath() + "/" + System.currentTimeMillis() + file_exts[currentFormat]); } private void startRecording(){ recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(output_formats[currentFormat]); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setOutputFile(getFilename()); recorder.setOnErrorListener(errorListener); recorder.setOnInfoListener(infoListener); try { recorder.prepare(); recorder.start(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private void stopRecording(){ if(null != recorder){ recorder.stop(); recorder.reset(); recorder.release(); recorder = null; } } private void displayFormatDialog(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); String formats[] = {"MPEG 4", "3GPP"}; builder.setTitle(getString(R.string.choose_format_title)) .setSingleChoiceItems(formats, currentFormat, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { currentFormat = which; setFormatButtonCaption(); dialog.dismiss(); } }) .show(); } private MediaRecorder.OnErrorListener errorListener = new MediaRecorder.OnErrorListener() { @Override public void onError(MediaRecorder mr, int what, int extra) { AppLog.logString("Error: " + what + ", " + extra); } }; private MediaRecorder.OnInfoListener infoListener = new MediaRecorder.OnInfoListener() { @Override public void onInfo(MediaRecorder mr, int what, int extra) { AppLog.logString("Warning: " + what + ", " + extra); } }; private View.OnClickListener btnClick = new View.OnClickListener() { @Override public void onClick(View v) { switch(v.getId()){ case R.id.btnStart:{ AppLog.logString("Start Recording"); enableButtons(true); startRecording(); break; } case R.id.btnStop:{ AppLog.logString("Start Recording"); enableButtons(false); stopRecording(); break; } case R.id.btnFormat:{ displayFormatDialog(); break; } } } }; } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload