Использование Bluetooth-гарнитуры, которая поддерживает стерео (только выход), моно (вход / выход) и динамики. Переключение между 3 - это много кликов. Что я хочу сделать: - запустить Stereo на динамике или гарнитуре - когда я совершаю или принимаю вызов VoIP (Skype, gTalk и т. Д.): Переключиться на профиль Bluetooth с включенным входом - переключиться обратно после вызова
.или же. Есть простое меню (индикатор?), Которое позволяет мне переключаться между предустановленными комбинациями ввода / вывода
Как это сделать?
Я думаю, что нашел ошибку с этим решением. В моем случае только 1 был установлен в качестве индекса, поэтому я получил эту ошибку >>> Карта с таким именем или индексом не найдена.
$ pacmd list-cards | grep -B 1 bluez
index: 10
name: <bluez_card.00_0D_44_A6_7D_85>
--
device.string = "00:0D:44:A6:7D:85"
device.api = "bluez"
--
device.form_factor = "headset"
bluez.path = "/org/bluez/1085/hci0/dev_00_0D_44_A6_7D_85"
bluez.class = "0x240404"
bluez.name = "Logitech Wireless Headset"
--
sinks:
bluez_sink.00_0D_44_A6_7D_85/#11: Logitech Wireless Headset
sources:
bluez_sink.00_0D_44_A6_7D_85.monitor/#22: Monitor of Logitech Wireless Headset
Я изменил ваш сценарий, и теперь он работает хорошо. (Возможно, это не лучшее решение)
Это то, что я изменил
#SINK=$( pacmd list-cards | grep -B 1 bluez | head -1 )
INDEX=$( pacmd list-cards | grep -B 1 bluez | head -1 | awk ' { print $2 } ' )
#SINK=$( pacmd list-cards | grep bluez )
MAC=$( pacmd list-cards | grep bluez | head -1 | awk -F . ' { print substr($2,0,length($2)) }' )
Насколько мне известно, не существует простого решения в один клик, которое бы позволило нам быстро переключиться с внутреннего звука на профиль аудио Bluetooth A2DP и профиль гарнитуры Bluetooth HSP.
Однако мы можем изменить вывод звука из командной строки, что дает нам возможность создать скрипт для переключения вывода звука. Нам нужны следующие команды:
pacmd list-cards
выведет список доступных карт. Как только гарнитура будет подключена, мы получим доступ к свойствам звука Bluetooth. Кроме того, теперь мы можем узнать индекс карточек pulseaudio и возможные профили для следующих команд.
pacmd set-card-profile <index> <profile>
изменяет профиль для номера карты <index>
. Для карты Bluetooth рассматриваемый профиль будет a2dp
для аудио профиля и hsp
для профиля телефонной гарнитуры.
pacmd set-default-sink
и pacmd set-default-source
изменят выход, соответственно. вход, используемый pulseaudio. Это не может быть сделано во время воспроизведения. См. этот ответ для получения подробной информации о том, как это сделать.
Ниже приведен пример сценария, который можно использовать для переключения вывода звука для гарнитуры Bluetooth:
#!/bin/bash
# CLI options: `a2dp': Audio Profile
# `hsp': Telephony Profile
# <Index> Default Sink (try `0' or `1')
SINK=$( pacmd list-cards | grep -B 1 bluez )
INDEX=${SINK:10:2}
SINK=$( pacmd list-cards | grep bluez )
MAC=${SINK:19:17}
BT_SINK="bluez_sink.$MAC"
BT_SOURCE="bluez_source.$MAC"
if [ $1 = a2dp ]; then
echo Setting A2DP audio sink $BT_SINK
pacmd set-card-profile $INDEX a2dp
pacmd set-default-sink $BT_SINK
elif [ $1 = hsp ]; then
echo Setting HSP headset sink $BT_SOURCE
pacmd set-card-profile $INDEX hsp
pacmd set-default-sink $BT_SINK
pacmd set-default-source $BT_SOURCE
else
echo Resetting to internal audio
pacmd set-default-sink $1
pacmd set-default-source $1
fi
Скопируйте сценарий, сохраните его как switch-sink
и предоставьте его исполняемым разрешение. В терминале перейдите в каталог сценариев и выполните сценарий со следующими параметрами:
switch-sink a2dp # switches to audio profile
switch-sink hsp # switches to headset/telephony profile
switch-sink <index> # switches to sink <index>, e.g. 0 depending on our default
Укажите полный путь к сценарию при выполнении с помощью сочетания клавиш или файла .desktop (для рабочего стола или средства запуска). ).
В случае, если в системе зарегистрировано более 99 звуковых карт, этот скрипт здесь не будет работать. Это может стать проблемой, поскольку ИНДЕКС карты будет увеличиваться при каждом включении питания или повторном подключении устройства Bluetooth. В качестве обходного пути мы можем изменить последнее условие else
, чтобы сбросить сервер pulseaudio (который затем также загрузит наш приемник звука по умолчанию):
else
pulseaudio -k
fi