在Android上检测当前音量

时间:2011-07-01 15:43:34

标签: android audio volume audiorecord

我正在构建一个始终从麦克风录制音频的应用程序,只要音频达到某个阈值,我就会执行某个操作。

但是,我应该如何为阈值计算适当的音量?我有一个静态卷编码,适用于某些设备但不是所有设备(在某些情况下它太敏感,反之亦然)。

我正在使用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而不是硬编码?

非常感谢, 泽

0 个答案:

没有答案