2013-12-13 16 views
0

Я использовал аудиомагнитофон Android для своего приложения, чтобы рассчитать окружающий шум.** Аудиомагнитофон Android * getMaxAmplitude() ** возвращает разные значения на разных устройствах

я получил максимальную амплитуду с функцией getMaxAmplitude() и превратили его в БД, используя эту формулу:

db = 20 * Math.log10(getMaxAmplitude()/ref) 

где ref=32767 (только эталонное значение)

Но когда я проверить приложение в разные устройства «db» не совпадают. Это означает, что getMaxAmplitude() варьируется среди устройств.

Если в sony tipo отображается -40db, значит, в Samsung S4 его -20db.

Почему этот вариант?

ответ

0

Различные устройства будут иметь разные микрофоны с различной чувствительностью и различными звуковыми аппаратурами/предусилителями. Кроме того, они могут применять различные входные коэффициенты усиления, EQ, а также автоматическое управление усилением (AGC) и алгоритмы шумоподавления, которые могут объяснить большую разницу, которую вы видите.

На некоторых устройствах вы можете запустить AlsaMixer (как root) для управления усилением входа микрофона.

Смежные вопросы