Я бы подумал, что это будет легко сделать, но никакое количество поисковых запросов не дало никаких решений.
Я написал приложение для клиента, которое работает в полноэкранном режиме и позволяет пользователю листать образовательные книги, чтобы научить детей читать. Все идет нормально. Некоторые фразы из отображаемых материалов зачитываются пользователю и, опять же, пока все хорошо. Обычно эти звуки читаются на системной громкости. (т. е. на какой бы громкости ни воспроизводился любой другой системный звук.)
Однако теперь клиент хочет, чтобы пользователь мог регулировать громкость в программе. У меня есть пользовательский интерфейс и обработка конца этой работы, но мне трудно настроить громкость воспроизводимых клипов осмысленным образом. Прямо сейчас у меня есть причудливая установка, которая включает в себя считывание исходного усиления клипа, а затем его регулировку вверх или вниз для каждого клипа. Хотя это и регулирует громкость, кажется, что это не относится к громкости системы — все звуки намного тише, чем громкость системы.
Итак, мой вопрос на самом деле таков: как вы предлагаете управлять громкостью звука в программе? Все мои исследования не выявили ничего значимого, что означает, что это сложно или даже невозможно, но что просто не кажется правильным.
О, подробности: я читаю WAV как AudioInputStreams и играю их как java.sound.sampled.Clip. Я контролирую усиление с помощью FloatControl.Type.MASTER_GAIN. (FloatControl.Type.VOLUME не поддерживается.) Я застрял на Java 1.4.