То, что я хочу, это следующее:
- Когда я подключаю наушники, я хочу, чтобы звук не был приглушен и установлен на определенный уровень громкости.
- Когда я отключаю наушники, я хочу, чтобы звук был отключен (или установлен на определенный уровень громкости).
Установка уровней громкости не является проблемой, но мне как-то нужно это делать при отключении / подключении наушников, поэтому я ищу способ получать уведомления об этих событиях.
Я быстро обнаружил, /proc/asound/card0/codec#0
чтобы указать, подключены ли наушники или нет, поэтому я попытался контролировать его с помощью inotifywait
и изменить уровень громкости на основе измененных уведомлений. К сожалению, inotifywait
не удалось, потому что proc не обычная файловая система.
Есть ли другие способы сделать это (возможно, через PulseAudio)?
Аудиоустройство: Intel HDA , аудиокодек: Conexant CX20585 .
Подводя итог тому, что я пробовал до сих пор:
- Ear Candy: вообще не работал в моей системе. Кажется, заброшенный проект?
- Код, опубликованный Карлом Билефельдом, может работать на некоторых аппаратных средствах, но не на моем.
- Идея от StephenPaulger проваливается из-за отсутствия канала «Speaker».
- По мотивам aking1012 я заставил его работать, взломав код ядра (после нахождения кода кодека, распознающего домкрат), но это довольно громоздкое решение.
Итак, я все еще ищу простой способ сделать это.
sound
pulseaudio
headphones
htorque
источник
источник
Ответы:
Чтобы установить уровень громкости с консоли, используйте команду amixer. Например:
Установлю свой уровень на 0%
Я не знаю, как это изменить, когда вы подключите наушники ... но, возможно, кто-то может помочь вам с этим
источник
Во время UDS для Oneiric был сеанс об обнаружении гнезда. Смотрите план для деталей. Похоже, это будет именно то, что я ищу: разные уровни громкости для разных устройств - только не на каждом оборудовании:
Обновление для 11.10
Теперь это должно работать в Oneiric - к сожалению, мой ThinkPad T510, похоже, является одной из систем, которые в настоящее время не поддерживаются.
Еще одно продолжение от Дэвида Хеннингсона:
Больше здесь .
Обновление от 12.04
Теперь он работает с моим ThinkPad T510 (и многими другими моделями) в Ubuntu 12.04 (версия для разработчиков).
источник
Ear Candy обладает некоторыми функциями для вставки / удаления наушников.
источник
Я не знаю, какой у вас опыт
inotifywait
написания кода, но вы упомянули, поэтому я предполагаю, что вы, по крайней мере, знакомы со сценариями оболочки. Следующая программа на C, основанная на этой статье , должна быть в состоянии обнаружить, что ваши наушники подключены или отключены, после чего вы можете выполнять любые действия, которые вы хотите.Программа принимает один аргумент, который должен быть путем к устройству ввода событий для ваших наушников. Это
/dev/input/event7
для меня, но вам, возможно, придется попробовать несколько, чтобы найти, что это в вашей системе. Вам понадобятся разрешения на чтение на этом устройстве. Программа напечатает имя устройства, а также тип, код и значение первого события перед выходом.источник
event.value
действительно переключается ... ноread
операция возвращается только при изменении значения ... может быть, вы знаете, как сделать так, чтобы оно не блокировалось? Спасибо, в любом случае!O_NONBLOCK
при открытии устройства и проверяете возвращаемое значениеread
. Если он отрицательный, чтение либо заблокировано, либо произошла какая-то другая ошибка. Существуют и другие более сложные способы сделать это без опроса, если вы включаете это в большую программу.Проверьте dmesg и другие файлы журнала. Вероятно, подключение / выход запускает некоторые конкретные сообщения.
Затем вы можете использовать демон для анализа этого файла журнала и обнаружения событий. Я думаю, вы знаете, что делать с этого момента :)
источник
Если вы делаете
громкость динамика будет отключена, но наушники продолжат работать. Отключение наушников означает отсутствие звука. Что почти то, что вы хотите ...
Однако ...
Если вы измените регулятор громкости, снова будет установлена громкость динамика. Это потому, что pulseaudio пытается быть умным с настройкой громкости (см. Http://pulseaudio.org/wiki/PulseAudioStoleMyVolumes для получения дополнительной информации). Мы можем помешать тому, чтобы он возился с томами.
Откройте /etc/pulse/default.pa
и найти строку
и изменить его на
Перезапустите pulseaudio.
Теперь, если вы отключите громкость динамика, изменение основного уровня громкости не повлияет на это. Так что наушники будут работать, а динамик будет молчать.
источник
Проверить ACPID-сокет на наличие изменений, можно с помощью python или C или сценария оболочки ( код Python для управления воспроизведением в плагине наушников и паузы на rhythmbox). Проверьте наличие изменений напряжения ACPID, чтобы обнаружить разъем наушников и разъем наушников. Однако можно ожидать задержку в несколько секунд.
источник
Pulseaudio имеет модуль, поставляемый по умолчанию, который предназначен для достижения именно этого:
http://pulseaudio.org/wiki/Modules#module-device-restore
источник
Я думаю, что вы можете достичь того, что вам нужно, используя это: https://bbs.archlinux.org/viewtopic.php?pid=1105458#p1105458
источник