2010-08-20 3 views

답변

7

OK! 이 온라인을 찾았으므로 분명히 가능했습니다. mediaRecorder.getMaxAmplitude()를 호출 할 수있는 것 같습니다.

코드

public void start() { 
    if (mRecorder == null) { 
     mRecorder = new MediaRecorder(); 
     mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
     mRecorder.setOutputFile("/dev/null"); 
     mRecorder.prepare(); 
     mRecorder.start(); 
     mEMA = 0.0; 
    } 
} 

public double getAmplitude() { 
    if (mRecorder != null) 
     return (mRecorder.getMaxAmplitude()/2700.0); 
    else 
     return 0; 
} 

여기 NoiseAlert

라는 응용 프로그램에서 나는에 오류가 발생하고있는 source

+0

의 'mRecorder.prepare();' try catch 블록을 추가하면 오류가 사라지지만 런타임 오류가 발생합니다. 열심히 좋은 대답을 기다리고 있습니다. – stack

+0

이 경우에는 계속해서 이벤트를들을 수 있습니다. 노이즈/사운드가있을 때마다 Get Amplitude 기능을 트리거하고 싶습니다. – Sparsh