1

I am working on an audio application, but it crashes when trying to create the PCM file, here the code:

public class RecordPCM {

public void record() {

    Log.d("mensaje","Recording testeo started");



    int frequency = 11025;
    //int channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO;

    int channelConfiguration = AudioFormat.CHANNEL_IN_MONO; //cambiado por el de arriba por deprecado


    int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
    File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/reverseme.pcm");




    // Delete any previous recording.
    if (file.exists()) {
    file.delete();
    Log.d("mensaje","file exists!!!");

    }


    // Create the new file.
    try {
    file.createNewFile();
    } catch (IOException e) {
    throw new IllegalStateException("Failed to create :::: " + file.toString());
    }

    try {
    // Create a DataOuputStream to write the audio data into the saved file.
    OutputStream os = new FileOutputStream(file);
    BufferedOutputStream bos = new BufferedOutputStream(os);
    DataOutputStream dos = new DataOutputStream(bos);

    // Create a new AudioRecord object to record the audio.
    int bufferSize = AudioRecord.getMinBufferSize(frequency, channelConfiguration, audioEncoding);
    AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, 
    frequency, channelConfiguration, 
    audioEncoding, bufferSize);

    short[] buffer = new short[bufferSize]; 
    audioRecord.startRecording();


    boolean isRecording = false; //metido para arreglar

    while (isRecording) {
    int bufferReadResult = audioRecord.read(buffer, 0, bufferSize);
    for (int i = 0; i < bufferReadResult; i++)
    dos.writeShort(buffer[i]);
    }


    audioRecord.stop();
    dos.close();

    } catch (Throwable t) {
    Log.d("mensaje","Recording Failed");
    }

}

public void copio(){
    Log.d("mensaje","Recording testeo");

}
}

so when I call

recordObject.record();

The app crashes with the error:

?:??: W/?(?): FATAL EXCEPTION: main
?:??: W/?(?): java.lang.IllegalStateException: Could not execute method of the activity
?:??: W/?(?):   at android.view.View$1.onClick(View.java:3597)
?:??: W/?(?):   at android.view.View.performClick(View.java:4202)
?:??: W/?(?):   at android.view.View$PerformClick.run(View.java:17340)
?:??: W/?(?):   at android.os.Handler.handleCallback(Handler.java:725)
?:??: W/?(?):   at android.os.Handler.dispatchMessage(Handler.java:92)
?:??: W/?(?):   at android.os.Looper.loop(Looper.java:137)
?:??: W/?(?):   at android.app.ActivityThread.main(ActivityThread.java:5039)
?:??: W/?(?):   at java.lang.reflect.Method.invokeNative(Native Method)
?:??: W/?(?):   at java.lang.reflect.Method.invoke(Method.java:511)
?:??: W/?(?):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
?:??: W/?(?):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
?:??: W/?(?):   at dalvik.system.NativeStart.main(Native Method)
?:??: W/?(?): Caused by: java.lang.reflect.InvocationTargetException
?:??: W/?(?):   at java.lang.reflect.Method.invokeNative(Native Method)
?:??: W/?(?):   at java.lang.reflect.Method.invoke(Method.java:511)
?:??: W/?(?):   at android.view.View$1.onClick(View.java:3592)
?:??: W/?(?):   ... 11 more
?:??: W/?(?): Caused by: java.lang.IllegalStateException: Failed to create :::: /storage/emulated/0/reverseme.pcm
?:??: W/?(?):   at com.hyper.reverspeech.RecordPCM.record(RecordPCM.java:48)
?:??: W/?(?):   at com.hyper.reverspeech.ReverSpeechActivity.buttonRecPressed(ReverSpeechActivity.java:20)

So

  1. what is making my app crash,

  2. Why is my logCat shown with ? question marks??,

thanks!

manuelBetancurt
  • 15,428
  • 33
  • 118
  • 216

1 Answers1

2

The cause of your "crash" is that your application is throwing am IllegalStateException when it tries (and fails) to create the file. Why you are getting an IOException is anyone's guess. You are throwing away the evidence! (Hint: use the IllegalStateException constructor that includes an exception argument ... and pass e)

The question marks in your logcat output could be explained by these:

Community
  • 1
  • 1
Stephen C
  • 698,415
  • 94
  • 811
  • 1,216