2012-06-16 10 views
6

Tôi đang làm việc trên ứng dụng trình ghi âm. Tôi muốn biết là có cách nào để tìm sức mạnh của âm thanh trong khi ghi âm. Tôi không muốn lưu bản ghi ở bất cứ đâu. Tôi chỉ muốn hiển thị cho người dùng nếu âm thanh bị micrô phát hiện to hơn sau đó là ngưỡng được xác định trước hay không.Làm thế nào để kiểm tra cường độ (cường độ) của âm thanh trong khi ghi âm?

Giả sử âm thanh bị bắt ở mức dưới 2 decibel, nó sẽ hiển thị "thấp" trong canvas màu đỏ. Ngay sau khi âm thanh to hơn và vượt qua 2 ngưỡng decibel, canvas sẽ chuyển sang màu xanh và hiển thị thông báo "cao".

Có thể sử dụng MediaRecorder hoặc i haveto sử dụng lớp AudioRecorder không. Và làm thế nào để làm việc nó ra.

Cảm ơn trước

+0

Hye ... tại sao downvote .. Đây là câu hỏi hoàn toàn thích hợp hoàn thành tất cả các chỉ tiêu SO .. ?? – Pargat

Trả lời

9

Bạn có thể bắt đầu thread khác khi ghi âm bắt đầu và sử dụng getMaxAmplitude chức năng để nắm bắt biên độ.

Dưới đây là snippet.here chúng tôi đang dùng mẫu cho mỗi 250 mili giây và tính toán biên độ tối đa

public void run() { 
      int i = 0; 
      while(i == 0) { 

       try { 
        sleep(250); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       if (mRecorder != null) { 
        amplitude = mRecorder.getMaxAmplitude(); 

        //Here you can put condition (low/high) 
        Log.i("AMPLITUDE", new Integer(amplitude).toString()); 
       } 

      } 
     }