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
-
what is making my app crash,
-
Why is my logCat shown with ? question marks??,
thanks!
The cause of your “crash” is that your application is throwing am
IllegalStateExceptionwhen it tries (and fails) to create the file. Why you are getting anIOExceptionis anyone’s guess. You are throwing away the evidence! (Hint: use theIllegalStateExceptionconstructor that includes an exception argument … and passe)The question marks in your logcat output could be explained by these: