getMaxAmplitude () "всегда" достигнут - PullRequest
2 голосов
/ 03 июля 2011

Я хочу, чтобы мое приложение реагировало на звук загрузки, как хлопок.Проблема в том, что getMaxAmplitude() достигает своего максимального значения 32762, даже когда разговаривает обычным голосом, переменная которого >= my "allMaxAmpli" установлена ​​в режиме конфигурации.

Устройство записи на носитель настроено так:

mrec = new MediaRecorder();
mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
mrec.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
[..]
mrec.setOutputFile(audiofile.getAbsolutePath());
mrec.prepare();
mrec.start();

и проверка выполняется следующим образом (абстрактно):

int maxAmp = mrec.getMaxAmplitude();
if (maxAmp >= CalibAmp)
  Log.v("ID", "Max Amp is greater!");

Я что-то пропустил?

Есть ли другой способ измерить громкость или увеличить предел для getMaxAmplitude?Я думал об использовании AudioRecord, но тогда мне нужно было рассчитать амплитуду вручную.Я хотел избавиться от этого.

Я долго искал, прежде чем подумать о публикации, но ничего не смог найти.Любая помощь будет принята.

/ Edit: Если я вычислю децибел из амплитуды, получат ли это другие значения?Тогда это может решить проблему.

/ Edit2: Я рассчитал децибел из амплитуды, но проблема сохраняется, поскольку амплитуда все время так высока.Ни у кого нет идеи?: /

/ Edit3: После тестирования некоторых других приложений кажется, что это общая проблема с Android.Поэтому каждое приложение для измерения звука бесплатное.

...