2016-09-06 1 views
0

의 진폭 얻는 방법 :내가 지금처럼 안드로이드에 마이크의 진폭 레벨을 얻으려고 노력했다 MediaRecorder

MediaRecorder recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 

Timer timer = new Timer(); 
timer.scheduleAtFixedRate(new RecorderTask(recorder), 0, 1000); 

private class RecorderTask extends TimerTask { 
    private MediaRecorder recorder; 

    public RecorderTask(MediaRecorder recorder) { 
     this.recorder = recorder; 
    } 

    public void run() { 
     Log.v("MicInfoService", "amplitude: " + recorder.getMaxAmplitude()); 
    } 
} 

불행하게도,이 경우에만 0을 반환 모든 시간을.

이것이 작동하려면 실제로 녹음을 시작해야합니다. 그 맞습니까?

그렇다면 500ms를 기록하고, 진폭을 얻고, 녹음을 중지하고 반복해야합니까?

마지막으로 파일에 녹음해야합니까? 이 오디오 파일을 저장할 필요가 없습니다. 녹음하지 않고 현재 라이브 마이크 입력의 마지막 호출 이후에 현재 진폭 또는 최대 진폭을 얻을 수 없습니까?

감사합니다. 감사합니다.

답변

0

예, 녹음을 시작해야합니다. 녹음하지 않으면 진폭을 알 수있는 신호가 없습니다.

아니요, 녹음을 중지 할 필요가 없습니다. getMaxAmplitude는 마지막으로 호출 한 이후 최대 진폭을 찾습니다.

예,이 API를 사용하면 파일에 작성해야합니다. 그래도 파일을 삭제할 수 있습니다. 또는/dev/null을 파일로 사용해보십시오.

관련 문제