Java Sound API для доступа к системе / основной регулировки громкости в Vista и Win 7 - PullRequest
0 голосов
/ 13 ноября 2009

История и ситуация:

В настоящее время я работаю над обновлением приложения Java, которое было разработано для клиента несколько лет назад (для работы на WinXP) и используется для тестирования и обучения людей с определенными нарушениями слуха. Пользователям, которые приобрели это приложение, было предоставлено определенное звуковое USB-устройство и наушники.

Одним из наиболее важных требований для этого программного обеспечения является то, что звук должен воспроизводиться пользователю с определенным уровнем звука в децибелах. Используя Java Sound API, было разработано приложение для динамической настройки громкости Windows в соответствии с рассчитанными уровнями (на основе измерений, выполненных при калибровке звукового устройства USB и наушников во время разработки).

Проблема:

Теперь необходимо обновить приложение для поддержки Windows Vista и Windows 7, однако из-за новой звуковой архитектуры для каждого приложения Windows я не смог найти какой-либо способ доступа к громкости Master / System с помощью Java Sound API.

Сам по себе регулятор громкости Windows приложения не обрезает его, поскольку он относительно системной громкости, и нет никакого способа гарантировать, что пользователь будет слышать выходной звук на определенном, известном уровне.

Кто-нибудь знает, возможно ли это сделать на Java, и если да, то как? Если это невозможно, то можете ли вы дать какие-либо рекомендации о том, какой может быть самый простой способ добиться этого? (Возможно, JNI и C - хотя я никогда раньше не использовал JNI ... какие-нибудь ошибки, о которых нужно знать?)

Ответы [ 2 ]

2 голосов
/ 13 ноября 2009

Если вы запускаете приложение в режиме совместимости с Windows XP, оно должно работать (это зависит от того, как Java Sound API взаимодействует с аппаратным объемом).

Если вы хотите использовать звуковые API для Vista (и более поздних версий), вам нужно взглянуть на API IAudioEndpointVolume.

0 голосов
/ 08 февраля 2011

Полагаю, поскольку вы используете USB-устройство, ваш звуковой API Java не обращается к нужному каналу.

Вы можете взглянуть на , как настроить общий уровень громкости в Windows XP . Я знаю, что вы не работаете в XP, но посмотрите, как получить доступ к определенным линиям и микшерам по этой ссылке. Возможно, вам придется немного поэкспериментировать, чтобы найти правильную комбинацию линии и микшера, или предложить своим пользователям графический интерфейс, который позволит им выбрать правильную комбинацию линии и микшера.

Я запускаю приложения, которые работают с этим методом в Windows 7, поэтому я сомневаюсь, что это проблема совместимости O.

...