2012-11-26 3 views
10

android Media Player를 사용하여 오디오를 재생하는 동안 Visualizer가 일부 웨이브를 표시합니다.android에서 오디오를 녹음하는 동안 Visualizer를 수행하는 방법

그러나 나는 녹음 중에 오디오를 녹음하는 동안 Visualizer를 보여주고 싶습니다. 나는 사용자의 음성 비트에 따라 바뀌는 선형 파를 보여주고 싶습니다.

안드로이드에서 할 수 있습니까? 모든 X 밀리 초 귀하의 MediaRecorder.getMaxAmplitude()를 호출하여

+0

레벨 미터로 충분합니까, 아니면 각 주파수 레벨이 필요합니까? – elgui

+0

그래프 api를 사용하여 그래프를 그리기 위해 최소한 비트 값이 필요합니다 – koti

+0

시간 간격이 길어질수록 플롯 된 바이트가 기록됩니다 ... – everlasto

답변

14

, 당신은 거 (official documentation에서)이 있습니다

마지막 호출이 방법 때문에 샘플링 최대 절대 진폭.

그런 다음 그래프를 그리거나 일부 뷰 속성을 변경하기 위해 실시간으로이 값을 처리 할 수 ​​있습니다.
완벽하지,하지만 난 그게 =)에 도움이되기를 바랍니다

편집 : 당신이 알고 단지 있도록 검색 값은 모든 안드로이드 장치에 걸쳐 동일합니다 : 0과 32767 사이 (I 이상 10,000 사용자의 보고서가 그들이 마이크에 날려 버리면 나에게이 가치를 부여합니다).

+0

아래의 답변을 참조하십시오.이 시도해 주셔서 감사합니다. – koti

+0

출력 파일을 지정해야합니다. 건너 뛰셨습니까? –

+0

아니, 그냥 레코더 하나처럼 줄 수 없습니다 : 파일 cacheDir = getWritableCacheDir(); samplePath = cacheDir.getAbsolutePath() + "/ sample"; mRecorder.setOutputFile (samplePath); 끝나면 삭제하십시오. – elgui

1

MediaRecorder 대신 AudioRecorder 클래스를 사용해야 할 수도 있습니다.

오디오 데이터를 파일에 직접 저장하는 대신 바이트 []에 넣는 AudioRecorder # read (...) 메서드를 확인하십시오.

그래프의 변경 내용을 표시하려면 데이터 (PCM 8 또는 16 비트로 인코딩 됨 - link)를 분석하고 그래프를 실시간으로 업데이트해야합니다.

3

두 가지 중요한 사항 :

  • 당신이 그들을 음모 중위 숫자 값 (마이크에서) 라이브 바이트를 변환해야합니다.
  • 실시간 그래프를 사용하기 때문에 점을 그릴 때 SurfaceView를 사용하십시오. 숫자 값에

    변환 기록 바이트 참조 : 당신이 변수 "온도"가 표시됩니다 Android: Listener to record sound if any sound occurs는 오디오의 수치를 보유하고 있습니다.

    플롯 그래프로 증가 X (시간 간격)의 값에 대해 플롯 팅하여 Y 값을 나타낸다 이러한 수치 (0,1,2 ...) 가리킨다. 서피스 뷰 SurfaceView 예 ..

를 사용하면
//canvas.drawLine(previous X value,previous Y value,X,Y, paint); 
canvas.drawPoint(X,Y,paint); 
SurfaceHolder.unlockCanvasAndPost(canvas); 

당신은 모든 값을 플롯 할 필요가 효율성을 위해 당신은 당신의 조건과 시간의 특정 간격에 대한 플롯과 그 값을 필터링 할 수 있습니다.

희망 사항 :

관련 문제