我想使用Media Recorder录制音频文件并将其保存到sd card
。调试器显示行recorder.start()
引发了IllegalStateException
。代码取自android dev网站,唯一的变化是文件名和路径。
当我在调试菜单中出现错误时,我会看到View
类,其中显示:
未找到来源。 源附件不包含View.class文件的源。 您可以通过单击下面的更改附加源来更改源附件:
canRecord是一个boolean
,最初设置为true,它指示在onClick
函数中调用哪个方法。该功能正在发挥作用。
@SuppressLint("SimpleDateFormat")
private void record(){
SimpleDateFormat timeStampFormat = new SimpleDateFormat("MM/dd/yyyy");
String audio_path = Environment.getExternalStorageDirectory() + "/resources/resources/WI1/";
String fileName = username +"-"+ timeStampFormat.format(new Date())+".mp4";
audio_button.setText("Recording");
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setOutputFile(audio_path+fileName);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
recorder.prepare();
} catch (IOException e) {
Toast.makeText(this, "Can't record audio at this time", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
canRecord = false;
recorder.start();
} // record
这是停止录制功能,虽然它从未达到过这一点。
private void stopRecording(){
audio_button.setText("Attach Audio");
recorder.stop();
recorder.release();
}
最后,我在清单中添加了以下权限:
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我该如何解决这个问题?谢谢!
答案 0 :(得分:2)
可能是你给录音机的文件名有问题。试试这个:
String audio_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/resources/resources/WI1/";
String fileName = audiopath+"-"+ timeStampFormat.format(new Date())+".mp4";
愿它有所帮助......
答案 1 :(得分:1)
我正在使用libgdx(多平台开源游戏引擎),当我尝试使用androids代码而不是libgdx代码进行录制时,我遇到了类似的问题。转出我需要处理我的libgdx记录器代码或只是删除这一切。也许你还有另一台录音机干扰某处