История и ситуация:
В настоящее время я работаю над обновлением приложения Java, которое было разработано для клиента несколько лет назад (для работы на WinXP) и используется для тестирования и обучения людей с определенными нарушениями слуха. Пользователям, которые приобрели это приложение, было предоставлено определенное звуковое USB-устройство и наушники.
Одним из наиболее важных требований для этого программного обеспечения является то, что звук должен воспроизводиться пользователю с определенным уровнем звука в децибелах. Используя Java Sound API, было разработано приложение для динамической настройки громкости Windows в соответствии с рассчитанными уровнями (на основе измерений, выполненных при калибровке звукового устройства USB и наушников во время разработки).
Проблема:
Теперь необходимо обновить приложение для поддержки Windows Vista и Windows 7, однако из-за новой звуковой архитектуры для каждого приложения Windows я не смог найти какой-либо способ доступа к громкости Master / System с помощью Java Sound API.
Сам по себе регулятор громкости Windows приложения не обрезает его, поскольку он относительно системной громкости, и нет никакого способа гарантировать, что пользователь будет слышать выходной звук на определенном, известном уровне.
Кто-нибудь знает, возможно ли это сделать на Java, и если да, то как? Если это невозможно, то можете ли вы дать какие-либо рекомендации о том, какой может быть самый простой способ добиться этого? (Возможно, JNI и C - хотя я никогда раньше не использовал JNI ... какие-нибудь ошибки, о которых нужно знать?)