Определение текущей громкости на Android - PullRequest
2 голосов
/ 01 июля 2011

Я создаю приложение, которое всегда записывает звук с микрофона, когда звук достигает определенного порога, я выполняю определенное действие.

Однако как мне рассчитать соответствующий объем для порога? У меня есть статический том, который хорошо работает на некоторых устройствах, но не на всех (в некоторых случаях он слишком чувствительный или наоборот).

Я использую 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 вместо жестко заданного кода?

Большое спасибо заранее, Зе

...