Вопрос

Я бы подумал, что это будет легко сделать, но никакие поиски в Интернете не нашли никаких решений.

Я написал приложение для клиента, которое работает в полноэкранном режиме и позволяет пользователю просматривать учебные книги, чтобы помочь детям научиться читать. Все идет нормально. Некоторые фразы из отображаемых материалов зачитываются пользователю и, опять же, пока все хорошо. Обычно эти звуки читаются на уровне громкости системы. (т.е. на любой громкости любой другой системный звук будет воспроизводиться.)

Однако клиент теперь хочет, чтобы пользователь мог регулировать громкость в программе . У меня есть пользовательский интерфейс и обработка этой работы, но мне сложно регулировать громкость воспроизводимых клипов. Прямо сейчас у меня есть забавная установка, которая включает в себя чтение исходного усиления клипа, а затем настройку его вверх или вниз для каждого клипа. Хотя это и регулирует громкость, но, похоже, не делает это по отношению к громкости системы - все звуки намного тише, чем громкость системы.

Итак, мой вопрос на самом деле: как вы предлагаете регулировать громкость звука в программе? Все мои исследования не дали ничего значительного, что для меня означает, что это сложно или даже невозможно , но это просто не кажется правильным.

О, подробности: я читаю в WAV как AudioInputStreams и играю их как java.sound.sampled.Clip. Я контролирую усиление с помощью FloatControl.Type.MASTER_GAIN. (FloatControl.Type.VOLUME не поддерживается.) Я застрял с использованием Java 1.4.

Это было полезно?

Решение

Вы также можете посмотреть, есть ли более старая версия Java Media Framework (JMF), которая будет поддерживать Java 1.4 ... она может предоставить вам более богатую среду для работы со звуком.

Кроме того, вы говорите, что застряли в 1.4 ... вы можете посмотреть, есть ли какой-нибудь способ, которым вы можете перейти на Java 5 или 6, хотя вы можете сначала протестировать любой из них на своей локальной машине, чтобы посмотрим, действительно ли они помогают.

Полагаю, последнее предложение - найти сайты по разработке игр для Java и опубликовать там свой вопрос; Я думаю, они бы нашли способ обойти это ... хотя вы также можете получить много ответов "обновить свой jvm". : -)

Удачи.

Другие советы

Это зависит от операционной системы, и вам придется использовать JNI или J / Invoke. или JNIWrapper или jna или ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top