此代码在实时应用上运行良好,但我刚收到Sprint Galaxy S3用户的错误报告。它在最后一行崩溃,并在其特定设备上显示“Start Failed”。 (设备未植根)
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setAudioEncoder(MedieRecorder.AudioEncoder.AAC);
mRecorder.setAudioEncodingBitRate(128);
mRecorder.setAudioEncodingBitRate(96 * 1024); //160 Kbps
mRecorder.setAudioSamplingRate(44100);
mRecorder.setAudioChannels(2);
mRecorder.setOutputFile(context.getFilesDir().getPath() + "/myfile.caf");
mRecorder.prepare();
mRecorder.start();
答案 0 :(得分:0)
确保getFilePathAndName()实际返回用于保存声音文件的实际路径和位置。当您使用MediaRecorder录制时,声音字节会同时保存,因此在录制之前必须知道保存的位置。如果没有,它将在start()时崩溃。要确保文件路径存在,请将其放在getFilePathAndName():
中String pathToExternalStorage = Environment.getExternalStorageDirectory().toString();
File soundDir = new File(pathToExternalStorage + "/" + "YourAppName");
//Build the directory structure, if needed.
soundDir.mkdirs();