2011-08-31 2 views
3

다음 코드를 사용하여 레코더를 만들었습니다. 오디오 녹음을 시작하고 중지 할 수 있으며 위치에 제대로 저장됩니다. 하지만 이제 음성 녹음기를 일시 중지 할 수있는 권한이 있습니다.Android : 음성 녹음기 및 이력서 일시 중지

오디오 녹음기를 일시 중지하는 방법은 무엇입니까? 그리고 음성 녹음을 재개합니까? 내 삼성 갤럭시 에이스에서 음성 녹음 appliation을 보았습니다. 일시 중지 버튼이 있습니다.

누군가 나를 밝힐 수 있습니까? 첫 번째 기사에 따르면이 2 페이지

http://developer.android.com/guide/topics/media/index.html http://developer.android.com/reference/android/media/MediaRecorder.html

밖으로

public class audio { 
    final MediaRecorder recorder = new MediaRecorder(); 
     final String path; 

     /** 
     * Creates a new audio recording at the given path (relative to root of SD card). 
     */ 
     public audio(String path) { 

     this.path = sanitizePath(path); 
     } 

     private String sanitizePath(String path) { 
     if (!path.startsWith("/")) { 
      path = "/" + path; 
     } 
     if (!path.contains(".")) { 
      path += ".3gpp"; 
     } 
     return Environment.getExternalStorageDirectory().getAbsolutePath() + path; 
     } 

     /** 
     * Starts a new recording. 
     */ 
     public void start() throws IOException { 
     String state = android.os.Environment.getExternalStorageState(); 
     if(!state.equals(android.os.Environment.MEDIA_MOUNTED)) { 
      throw new IOException("SD Card is not mounted. It is " + state + "."); 
     } 

     // make sure the directory we plan to store the recording in exists 
     File directory = new File(path).getParentFile(); 
     if (!directory.exists() && !directory.mkdirs()) { 
      throw new IOException("Path to file could not be created."); 
     } 

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

      recorder.prepare(); 
      recorder.start(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     // TODO: handle exception 
    } 
     } 

     /** 
     * Stops a recording that has been previously started. 
     */ 
     public void stop() throws IOException { 
     recorder.stop(); 
     recorder.reset(); 
     recorder.release(); 
     } 

     public void pause() { 

     } 

    } 

답변

1

검사는 일시 정지가()

하지만 난 그렇게 확신 메신저하지

다른 것은 괜가 그 두 번째 링크를 일시 중지() 메서드를 참조하십시오 해달라고 첫 번째 기사 참조 : "그러나 stop()을 호출하면 MediaPlayer를 다시 준비 할 때까지 start()를 다시 호출 할 수 없습니다. MediaPlayer 객체와 상호 작용하는 코드를 작성할 때는 상태 다이어그램을 항상 염두에 두십시오. 잘못된 상태에서 해당 메서드를 호출하는 것이 버그의 일반적인 원인이기 때문에 항상 버그가 있습니다. "

() 다시

+0

녹음기가 아니라 MediaPlayer 사용할 수 있습니다. 그게 내가 지금이 문제가 :( –

+0

나는 불가능한 말을하는 것을 싫어하지만 여기에 또 다른 같은 stackoverflow 게시물 - http : // stackoverflow .com/questions/6128440/is-there-pause-available-in-mediarecorder-class –

+0

이것은 네이티브 API에 누락 된 진짜 짜증나는 기능입니다. ( –