2012-05-14 23 views
8

Tôi đang cố ghi lại âm thanh từ MIC và vẽ biểu đồ trực tiếp. Tôi có thể ghi lại và vẽ biểu đồ. Vấn đề là các giá trị được ghi lại bằng cách sử dụng mã dưới đây là không chính xác ví dụ ... hình ảnh dưới đây là những gì tôi nhận được khi không có âm thanh ở tất cả hiện tại. Tôi đã thấy các ví dụ bằng cách sử dụng fft nhưng tôi không chắc chắn nếu điều đó sẽ được giúp đỡ trong trường hợp của tôi như tôi đang cố gắng vẽ một đồ thị miền thời gian và tôi thấy không có mục đích để chuyển đổi nó sang miền tần số (bây giờ). Những người khác đang sử dụng sức mạnh trung bình, điều này có thể hữu ích nhưng tôi không chắc chắn.đọc biên độ âm thanh của AndroidRecord từ MIC

Cảm ơn bạn đã được trợ giúp.

enter image description here

bufferSize = AudioRecord.getMinBufferSize(RECORDER_SAMPLERATE,RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING); 

    recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, 
      RECORDER_SAMPLERATE, RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING, bufferSize); 

    short data [] = new short[bufferSize]; 

    while (!Thread.interrupted()) { 

     recorder.startRecording(); 

     recorder.read(data, 0, bufferSize); 

     recorder.stop(); 

     for (short s : data) 
     { 
      try { 
       Thread.sleep((long) 300.00); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      postUI (Math.abs(s)); 
     } 
    } 

    recorder.release(); 
+0

hi làm thế nào bạn đã có được biên độ của âm thanh trong audiorecorder xin vui lòng giúp –

+1

ghi = new AudioRecord (MediaRecorder.AudioSource.MIC, RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, bufferSize); recorder.startRecording(); \t \t \t máy ghi.đọc (dữ liệu, 0, bufferSize); \t \t \t ghi.stop(); cho (s ngắn: dữ liệu) { trung bình + = Math.abs (s); } – user591124

Trả lời

12

Đối với bất cứ ai khác tìm kiếm một cách để làm điều này, hãy kiểm tra Samsung's fantastic example complete with source code

Samsung example

+2

Tôi đã sử dụng điều này, nhưng Samsung có (sai) tùy ý thiết lập âm lượng tối đa là "4,000", mặc dù thiết bị của tôi có thể đăng ký ít nhất một khối lượng "7.000" (bất kể điều đó có nghĩa là gì). –

+0

Hey @KeirSimmons giá trị khác nhau tùy theo thiết bị. – Gourneau

1

Hãy thử sử dụng một tỷ lệ lấy mẫu cao hơn. Tối đa là 48000, nhưng 44100 là tiêu chuẩn.

Ngoài ra, có thể micrô chỉ là tiếng ồn nền ghi.

+0

Tôi lấy trung bình của tất cả các giá trị trong mảng ngắn thay vì abs (s). Điều đó hoạt động tốt. – user591124

Các vấn đề liên quan