2013-06-04 40 views
0

我想使用媒体录像机录制并保存音频文件到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" /> 

我该如何解决这个问题?谢谢!

回答

2

可能有问题,你给的recorder.Try这个文件名:

String audio_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/resources/resources/WI1/"; 
    String fileName = audiopath+"-"+ timeStampFormat.format(new Date())+".mp4"; 

可以将它有助于..

1

我使用libgdx(跨平台的开源游戏引擎)和i有一个类似的问题,当我试图使用Android代码而不是libgdx代码进行记录时。退出后,我需要处理我的libgdx记录器代码或只是将其全部删除。因此,也许您有另一个记录器干扰某处