我正在尝试编写一款可以通过手机/平板电脑的麦克风收听声音的应用。我认为捕捉声音并不太难,我找到了一些代码here。
我想知道如何关联音量级别?理想情况下,我想将声级转换为分贝,但任意比例都可以。
答案 0 :(得分:1)
最后我只是用Java SDK来做这件事,然后当我将应用程序转换为iOS时,我在objective-c中重写了它。
在Android上,您可以导入以下库:
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
然后拨打这样的电话来查看录音的幅度:
int minSize = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
AudioRecord ar = new AudioRecord(MediaRecorder.AudioSource.MIC, 8000,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,minSize);
short[] buffer = new short[minSize];
ar.startRecording();
while(1){
ar.read(buffer, 0, val*minSize);
average_buffer = 0;
for (int i = 0; i < minSize; i++){
average_buffer += (int) Math.sqrt((float)buffer[i]*buffer[i]);
}
Log.i("NOISE LEVEL", Integer.toString(average_buffer);
}