Вы можете получить доступ к микрофонам через Sound API, но это не даст вам простой уровень громкости.Вам просто нужно захватить данные и принять собственное решение о том, насколько они громкие.
http://download.oracle.com/javase/tutorial/sound/capturing.html
Запись подразумевает сохранение данных, но здесь вы можете отказаться от данных, как только выВы закончили определение его громкости.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.да, вы бы захватили небольшую длину данных (может быть, всего несколько миллисекунд) и вычислили бы их амплитуду.Периодически повторяйте это в зависимости от того, как часто вам нужны обновления.Если вы хотите отслеживать предыдущие громкости и сравнивать их, это ваше дело - на данный момент это просто сравнение чисел.Вы можете использовать среднее значение недавних громкостей для расчета громкости в комнате, чтобы вы могли обнаружить внезапное увеличение шума.
Я не знаю, сколько накладных расходов при включении и выключении захвата звука,но вам может быть лучше держать TargetDataLine
открытым все время и просто вычислять громкость, когда вам это нужно.Пока строка открыта, вам нужно продолжать вызывать read (), в противном случае приложение будет зависать, ожидая, пока вы прочитаете данные.