1

사용자가 오디오를 녹음하고 SD 카드의 어딘가에 저장할 수있는 응용 프로그램을 만들고 있습니다. 오디오 녹음을 위해 MediaRecorder를 사용하고 있습니다.Android MediaRecorder IllegalStateException

androiddevblog 웹 사이트의 코드 중 일부는 stackoverflow에서 다른 튜토리얼을 확인하기 위해 다른 사용자가 권장 한 코드를 재사용하고 있습니다.

제 문제는 오디오를 녹음하기 위해 단추를 클릭 할 때마다 "귀하의 응용 프로그램이 강제로 중지되었습니다"라는 오류가 발생합니다. recorder.stop()에서 illegalStateException이 발생했기 때문에 디버거를 사용했습니다.

코드를 기반으로 기록되는 내용이 없습니다. 먼저 파일이 만들어지고 저장되는지 확인하려고합니다.

전이 질문을 게시하고 원래의 문제를 해결했지만 이후에이 문제가 발생했습니다. 그래서 그것은 중복으로 보일 수 있습니다.

public class MyRecorderActivity extends Activity{ 

private static final String AUDIO_RECORDER_FOLDER = "AudioRecorder"; 
private static final String AUDIO_RECORDER_FILE_EXT_3GP = ".3gp"  
private Button audio; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.questionandanswer); 
.... 
.... 

audio = (Button) findViewById(R.id.audio_recordactivity); 
    audio.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 

     startRecording(); 


     } 
    }); 

} 

    private String getFilename(){ 
     String filepath = Environment.getExternalStorageDirectory().getPath(); 
     File file = new File(filepath,AUDIO_RECORDER_FOLDER); 

     if(!file.exists()){ 
       file.mkdirs(); 
     } 

     return (file.getAbsolutePath()+ "/ " + System.currentTimeMillis() + AUDIO_RECORDER_FILE_EXT_3GP); 

    } 

private void startRecording(){ 
     MediaRecorder recorder = new MediaRecorder(); 

     recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
     recorder.setOutputFile(getFilename()); 

     try { 
       recorder.prepare(); 
       recorder.start(); 
     } catch (IllegalStateException e) { 
       e.printStackTrace(); 
     } catch (IOException e) { 
       e.printStackTrace(); 
     } 

     recorder.stop(); 
     recorder.reset(); 
     recorder.release(); 
    } 

} 

답변

0

다음 권한을 포함해야합니다.

<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
+0

작동 희망 – AndroidDev93

0

다른 녹화가 활성화 될 수 있음을 녹음을 중지하고 작업을 다시 수행 (기본 레코더 나 다른 다운로드 된 응용 프로그램의 recorderr 수 있음), 그것이 내가 필요한 모든 권한을 추가 한

관련 문제