Я хочу предупредить пользователя в приложении Swing об определенных событиях с помощью старомодного звукового сигнала динамика ПК (НЕ звуковой карты), поскольку не на каждом ПК есть звуковая карта с подключенным динамиком, или громкость может быть установлена на ноль, или могут быть подключены наушники ... Как это сделать?
ОБНОВИТЬ: java.awt.Toolkit.getDefaultToolkit (). beep () обычно генерирует звук на звуковой карте. Он использует динамик, только если нет активной звуковой карты. Чтобы напечатать значение ASCII 7, работает только в том случае, если приложение запущено в терминале, что по крайней мере приложение Swing обычно не работает. Так что вопрос остается открытым.
@ Джонатан С. - Я не знал, что такие вещи существуют. Это ноутбук?
Если вы создадите свой собственный, вы, очевидно, можете просто не подключать динамик, но я не знаю ни одного, что не идет с ним. Помимо прочего, они очень необходимы для устранения проблем с материнской платой (звуковых сигналов).
Нет, это игровой компьютер, который я построил. Думаю, у него мог бы быть динамик, если бы я его подключил. Но в том корпусе, который я использовал, его не было и на материнской плате его нет. Я не удивлюсь, если это станет более распространенной мерой экономии, но я пропустил эти POST-сигналы в течение первых нескольких дней ...




Toolkit.getDefaultToolkit().beep();
Beep работает не так, как задумал спрашивающий; он использует звук ошибки, определяемой ОС.
Значение ASCII 7 - это звуковой сигнал. Так что просто напечатайте этот символ.
Это может работать или не работать в зависимости от того, как запускается приложение. Если он запускается отдельно от обычного терминала, печать не будет интерпретироваться оболочкой. Решение Mmyers более гибкое.
Попробуй это:
java.awt.Toolkit.getDefaultToolkit().beep();
У меня это сработало, хотя я не уверен, был ли это звуковой сигнал динамика ПК или какой-то звуковой сигнал, созданный ОС.
Также работает с OS X. Он воспроизводит звуковой сигнал вашей системы.
Я почти уверен, что в Windows, если у вас не установлен драйвер звуковой карты / звуковой карты и происходит что-то, требующее такого звукового сигнала, вместо этого издается звуковой сигнал системного динамика.
Beep работает не так, как задумал спрашивающий; он использует звук ошибки, определяемой ОС.
Я где-то читал, что вам нужно использовать dll C / C++ и подключить ее к JNI, чтобы это работало, .. ссылка не в сети
Хорошо, я нашел то, что ты ищешь
http://pyx4j.com/pyx4j-native/index.html
he pyx4j-native project is a collection of java wrappers for windows functions like time and beep. Now only works on windows.
NativeThreadDump - Send CtrlBreak Event to current process
Beep - Make a sound using PC speaker
FileUtil - Access and modify file creation time. Used in com.pyx4j.log.RollingFileAppender
NativeTimer - System high-resolution performance counter used before Java 5
Кроме звукового сигнала, вы можете попробовать JFugue.
JFugue - это Java API с открытым исходным кодом для программирования музыки без сложностей MIDI.
Спасибо за ответ, но может ли JFugue воспроизводить звук на динамике ПК, даже если присутствует звуковая карта? Если нет, это не ответ на вопрос. ;-)
{
If (whatever you named the file) = true
Then
Process.Start ("C:\Windows\Media\{whatever you named the file})
}
Я использую это в C#. Для меня уже поздно: код не совсем точен, пока люди не раскритиковали этот пост. Поместите каталог для записи, чтобы назвать папку и объявить ее местоположением по умолчанию. Переместите выбранный вами звук в эту папку, и он будет воспроизводить звуковой сигнал. Установите таймер в Java, чтобы звук повторялся каждые 2 секунды, чтобы привлечь внимание людей. Надеюсь, это поможет, когда я учусь самому!
Вы должны хотя бы упомянуть, что это ответ только для Windows, а не общий ответ Java.
Проблема также в том, что он вызовет шум только от звуковой карты, чего я пытался избежать, поскольку его можно было подключить к наушникам, установить громкость на ноль и так далее.
Отметим, что у меня новый компьютер без внутреннего динамика.