나는과 같이 안드로이드에 마이크의 진폭 레벨을 얻으려고 노력했다 :Android : 실시간 진폭/레벨을 얻기 위해 녹음하지 않은 샘플 마이크?
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를 기록하고, 진폭을 얻고, 녹음을 중지하고 반복해야합니까?
마지막으로 파일에 녹음해야합니까? 이 오디오 파일을 저장할 필요가 없습니다. 녹음하지 않고 현재 라이브 마이크 입력의 마지막 호출 이후에 현재 진폭 또는 최대 진폭을 얻을 수 없습니까?
감사합니다. 감사합니다.
분명히 한 대신, 필요 파일을 기록하지 않으려면 가지 audiorecord을 사용할 수 있습니다 – Tom
당신은 리디렉션 할 수 있습니다 : N이 어디 저장하지 않습니다 아래로 당신이 출력 목적지를 설정하면 파일에 출력을 저장 할 필요가 없습니다 여기 참조 오디오/미디어 출력을/dev/null에 저장하고 실제 레코딩이 그런 식으로 진행되는 것을 방지합니다. 또한 recorder.prepare()를 사용했는지 확인하십시오. 그렇지 않으면 작동하지 않습니다. – kpax