我正在构建一个始终从麦克风录制音频的应用程序,只要音频达到某个阈值,我就会执行某个操作。
但是,我应该如何为阈值计算适当的音量?我有一个静态卷编码,适用于某些设备但不是所有设备(在某些情况下它太敏感,反之亦然)。
我正在使用AudioRecord,这是代码的一部分:
int bufferSize = AudioRecord.getMinBufferSize(Constants.RECORDING_FREQUENCY,Constants.channelConfiguration,Constants.audioEncoding);
AudioRecord audioRecord = new AudioRecord( MediaRecorder.AudioSource.MIC,Constants.RECORDING_FREQUENCY,Constants.channelConfiguration,Constants.audioEncoding, bufferSize);
short[] buffer = new short[bufferSize];
while(true) {
int bufferReadResult = audioRecord.read(buffer, 0, bufferSize);
for (int i = 0; i < bufferReadResult; i++) {
currentVolume = java.lang.Math.abs(buffer[i]);
if (currentVolume > Constants.NO_VOLUME_AMPLITUDE)
// ALRIGHT ! This is what I'm looking for :D
}
}
所以,我的问题是:如何计算Constants.NO_VOLUME_AMPLITUDE而不是硬编码?
非常感谢, 泽