2010-08-25 31 views
8

Tôi muốn phát triển một ứng dụng Android nhỏ để đo mức độ tiếng ồn hiện tại (có thể là dB). Nhưng tôi không biết phải tìm gì trong libs. Tôi không muốn ghi lại tiếng ồn. Ai đó có thể cho tôi một con trỏ những gì các lớp học để xem xét?Mức độ tiếng ồn truy vấn trong Android

Trả lời

4

tôi khuyên bạn nên tìm kiếm trong các lớp:

android.media.AudioFormat 
android.media.AudioManager 
android.media.AudioTrack 

Chúng tôi sử dụng chúng trong các Blinkendroid audio package một thời gian ngắn trước đây.

+0

Tôi đã xem qua, có vẻ như tôi phải ghi lại tệp, ngay lập tức xử lý tệp đó để có mức độ tiếng ồn, lặp lại, điều này sẽ vô cùng hiệu quả. Không có quyền truy cập trực tiếp vào micrô trong đó ... – fredley

+0

Có thể ba lớp này trong kho lưu trữ có thể giúp bạn ở đó: http://code.google.com/p/blinkendroid/source/browse/trunk/blinkendroid/src/org/cbase/blinkendroid/audio /? r = 96 Chúng tôi đã ghi âm, xử lý và hiển thị âm thanh trong dự án này, nhưng lại xóa nó. – keyboardsurfer

+0

Tôi đã hy vọng làm điều đó mà không cần ghi âm, nhưng tôi sẽ kiểm tra. – Sebi

0

Đoạn mã sau đây cho biết cách chúng tôi có được mức độ tiếng ồn trong quá khứ. Thật không may tài liệu không cho biết đơn vị #getMaxAmplitude() trả về.

// Start recording but don't store data 
MediaRecorder mediaRecorder = new MediaRecorder(); 
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
mediaRecorder.setOutputFile("/dev/null"); 
mediaRecorder.prepare(); 
mediaRecorder.start(); 

// Obtain maximum amplitude since last call of getMaxAmplitude() 
while(someCondition) { 
    int amplitude = mediaRecorder.getMaxAmplitude(); 
} 

// Don't forget to release 
mediaRecorder.reset(); 
mediaRecorder.release(); 
Các vấn đề liên quan