Переключение между динамиком, Bluetooth стерео, Bluetooth моно

Использование Bluetooth-гарнитуры, которая поддерживает стерео (только выход), моно (вход / выход) и динамики. Переключение между 3 - это много кликов. Что я хочу сделать: - запустить Stereo на динамике или гарнитуре - когда я совершаю или принимаю вызов VoIP (Skype, gTalk и т. Д.): Переключиться на профиль Bluetooth с включенным входом - переключиться обратно после вызова

.или же. Есть простое меню (индикатор?), Которое позволяет мне переключаться между предустановленными комбинациями ввода / вывода

Как это сделать?

4
задан 3 July 2012 в 15:42

2 ответа

Я думаю, что нашел ошибку с этим решением. В моем случае только 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)) }' )
0
ответ дан 3 July 2012 в 15:42

Насколько мне известно, не существует простого решения в один клик, которое бы позволило нам быстро переключиться с внутреннего звука на профиль аудио 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 (для рабочего стола или средства запуска). ).


Дополнительные примечания к звуковой плате. INDEX:

В случае, если в системе зарегистрировано более 99 звуковых карт, этот скрипт здесь не будет работать. Это может стать проблемой, поскольку ИНДЕКС карты будет увеличиваться при каждом включении питания или повторном подключении устройства Bluetooth. В качестве обходного пути мы можем изменить последнее условие else, чтобы сбросить сервер pulseaudio (который затем также загрузит наш приемник звука по умолчанию):

else
    pulseaudio -k
fi
0
ответ дан 3 July 2012 в 15:42

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

Похожие вопросы: