2012-01-03 5 views
3
나는이 코드를 사용하여 안드로이드 에뮬레이터에서 마이크에서 오디오를 녹음하려고

에 MediaPlayer를 가진 오디오 녹음 :안드로이드 : 에뮬레이터

recorder.stop(); 
recorder.reset(); 
recorder.release(); 
: 오디오를 정지

recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
recorder.setOutputFile(Environment.getExternalStorageDirectory() + "/test/test.3gp"); 
try { 
    recorder.prepare(); 
} 
catch (IOException io) { 
    Log.v(LOG_TAG, "Could not prepare the audio " + io.getMessage()); 
} 
recorder.start(); 

,이 코드입니다

녹음 프로세스가 정상적으로 작동하지만 결과 오디오가 왜곡됩니다. 60 초 동안 오디오를 녹음하고 재생하면 지속 시간이 120 초로 표시됩니다. 측정이 정확하지는 않지만 단지 아이디어를주는 것입니다.

내 에뮬레이터에서 AMR_NB 인코더 만 작동합니다. 다른 출력 형식을 시도했지만 그 결과는 항상 같습니다.

에뮬레이터의 한계입니까? 아니면 여기에서 뭔가 잘못하고 있습니까?

편집 1 : AudioRecord 클래스도 시도했는데 결과는 오디오를 드래그하는 것과 같습니다.

감사합니다. 내가 솔루션이 발견 같은 근무하고있다

답변

1

, 다음 코드를 사용해보십시오 :이 perfactly 노력

private void startRecording() 
    { 

     this.recorder = new MediaRecorder(); 
     this.recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     this.recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
     this.recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
     MediaRecorder.getAudioSourceMax(); 
     this.recorder.setOutputFile(this.getFilename()); 
     this.recorder.setOnErrorListener(this.errorListener); 
     this.recorder.setOnInfoListener(this.infoListener); 

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

. 희망이 당신을 도와줍니다 :)

+0

게시 주셔서 감사합니다; 나는 운이 없다. "MediaRecorder.getAudioSourceMax();"를 추가했습니다. 그러나 오디오는 여전히 끌립니다. 참고로, 나는 안드로이드 4.0.3, API 레벨 15, 맥에서 ARM 에뮬레이터로 이것을 시도하고있다. – Srisa