Я прошу любое решение (алгоритм, установку программы ...), чтобы остановить музыку, когда мы снимаем наушники,
Спасибо!
Это происходит по умолчанию, поскольку человечность 14.04 имеет различные профили для Вашего наушника и Вашего динамика. Просто отключите звук своего динамика сначала и затем вставьте Ваши наушники, это активирует профиль наушника, и можно послушать музыка, момент, Вы удаляете свой наушник, это вернется к профилю динамика, который был первоначально отключен звук, таким образом, это будет отключено звук.
На самом деле это имеет задержку 1 секунды. Поскольку я не мог найти системное событие, которое инициировало с удалением разъема наушников, таким образом, я использовал цикл задержки 1 секунды.
Проверка на идентификатор приемника и использование имен порта:
pactl list sinks
Затем изменяют их в этом сценарии, что состояние порта монитора затем отправляет команду "пауза" MPRIS:
#!/bin/bash
sink_id=1
port_name_headset=analog-output-headphones
port_name_speaker=analog-output-speaker
while sleep 1 ;
do
cur_port=`pactl list sinks | awk '/Active Port:/ { print $3 }' | awk NR==$(( $sink_id + 1 ))`
echo -n -e "\n was $prev_port now $cur_port"
if [[ "$prev_port" = "$port_name_headset" && "$cur_port" = "$port_name_speaker" ]]
then
echo " << Pause >>"
gdbus call --session \
--dest org.mpris.MediaPlayer2.vlc.instance$(pgrep vlc) \
--object-path /org/mpris/MediaPlayer2 \
--method org.mpris.MediaPlayer2.Player.Pause
fi
prev_port=$cur_port
done
Примечание:
Это только для VLC, но он мог быть изменен для покрытия других плееров MPRIS. См. , Как я останавливаю xscreensaver во время игры фильмов?
Ссылка: Спецификация
MPRIS D-Bus Interface, Если Вы означаете только отключать звук звука, использует эту команду (просто изменяются id
):
pactl set-sink-mute id 1