Как навести шум на динамике ПК с помощью Java

Я хочу предупредить пользователя в приложении Swing об определенных событиях с помощью старомодного звукового сигнала динамика ПК (НЕ звуковой карты), поскольку не на каждом ПК есть звуковая карта с подключенным динамиком, или громкость может быть установлена ​​на ноль, или могут быть подключены наушники ... Как это сделать?

ОБНОВИТЬ: java.awt.Toolkit.getDefaultToolkit (). beep () обычно генерирует звук на звуковой карте. Он использует динамик, только если нет активной звуковой карты. Чтобы напечатать значение ASCII 7, работает только в том случае, если приложение запущено в терминале, что по крайней мере приложение Swing обычно не работает. Так что вопрос остается открытым.

Отметим, что у меня новый компьютер без внутреннего динамика.

Jonathan S. 06.11.2008 21:09

@ Джонатан С. - Я не знал, что такие вещи существуют. Это ноутбук?

Michael Myers 06.11.2008 21:12

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

rmeador 06.11.2008 21:24

Нет, это игровой компьютер, который я построил. Думаю, у него мог бы быть динамик, если бы я его подключил. Но в том корпусе, который я использовал, его не было и на материнской плате его нет. Я не удивлюсь, если это станет более распространенной мерой экономии, но я пропустил эти POST-сигналы в течение первых нескольких дней ...

Jonathan S. 06.11.2008 21:24
stackoverflow.com/a/1932537/3651739 проверить этот ответ
Jishnu Prathap 27.10.2017 09:21
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
20
5
24 126
6

Ответы 6

Toolkit.getDefaultToolkit().beep();

Beep работает не так, как задумал спрашивающий; он использует звук ошибки, определяемой ОС.

Lawful Lazy 10.05.2016 04:46

Значение ASCII 7 - это звуковой сигнал. Так что просто напечатайте этот символ.

Это может работать или не работать в зависимости от того, как запускается приложение. Если он запускается отдельно от обычного терминала, печать не будет интерпретироваться оболочкой. Решение Mmyers более гибкое.

James Van Huis 06.11.2008 21:14

Попробуй это:

java.awt.Toolkit.getDefaultToolkit().beep();  

У меня это сработало, хотя я не уверен, был ли это звуковой сигнал динамика ПК или какой-то звуковой сигнал, созданный ОС.

Также работает с OS X. Он воспроизводит звуковой сигнал вашей системы.

Kevin Conner 20.01.2010 06:05

Я почти уверен, что в Windows, если у вас не установлен драйвер звуковой карты / звуковой карты и происходит что-то, требующее такого звукового сигнала, вместо этого издается звуковой сигнал системного динамика.

Daniel Situnayake 04.03.2010 21:46

Beep работает не так, как задумал спрашивающий; он использует звук ошибки, определяемой ОС.

Lawful Lazy 10.05.2016 04:46

Я где-то читал, что вам нужно использовать 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 воспроизводить звук на динамике ПК, даже если присутствует звуковая карта? Если нет, это не ответ на вопрос. ;-)

Hans-Peter Störr 25.10.2010 12:37
    {
     If (whatever you named the file) = true
     Then
     Process.Start ("C:\Windows\Media\{whatever you named the file})
     }

Я использую это в C#. Для меня уже поздно: код не совсем точен, пока люди не раскритиковали этот пост. Поместите каталог для записи, чтобы назвать папку и объявить ее местоположением по умолчанию. Переместите выбранный вами звук в эту папку, и он будет воспроизводить звуковой сигнал. Установите таймер в Java, чтобы звук повторялся каждые 2 секунды, чтобы привлечь внимание людей. Надеюсь, это поможет, когда я учусь самому!

Вы должны хотя бы упомянуть, что это ответ только для Windows, а не общий ответ Java.

Toby Speight 08.11.2016 16:49

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

Hans-Peter Störr 12.07.2019 12:12

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