Автоподключение Bluetooth-устройств

Я исправляю проблему с этим скриптом: добавьте этот скрипт в файл «/etc/network/if-down.d»

cd /etc/network/if-down.d
vim ifdown

:

#!/bin/bash 

for I in /sys/class/net/* 
do
        ifname=$(basename $I) 
        if [ $ifname != "lo" ] ; then 
                ip addr flush $ifname
        fi
done

и наконец:

chmod +x ifdown

теперь вы можете изменить IP-адрес и перезапустить сетевую службу с помощью команды systemctl или service. ПРИМЕЧАНИЕ. Этот скрипт слишком прост и НЕ ОБРАЩАЕТ интерфейсы vm, tap, bridge и .... фактически очистить все интерфейсы исключить lo (loopback).

24
задан 1 November 2010 в 07:43

22 ответа

Pulseaudio> = 1.0

Редактируя /etc/pulse/default.pa, мы можем загрузить модуль модуля pulseaudio-switch-on-connect для автоподключения к приемнику звука, как только он будет представлен звуковому серверу pulseaudio , Нам нужно вставить следующую строку

load-module module-switch-on-connect

Предыдущие версии pulseaudio

Устройства Bluetooth распознаются в PulseAudio, как только они присутствуют. Однако подключение должно выполняться вручную в настройках звука. Существует графический интерфейс, который позволяет подключаться к BT-устройствам одним нажатием (stream2ip).

module-switch-on-connect Из версии 0.2.5 stream2ip позволяет автоматически подключаться к устройствам Bluetooth.

Изменить: вы можете настроить свой синий (например, с помощью pactl или в настройках конфигурации) с возвратом к внутреннему аудио, если нет Bluetooth-устройства.

Edit: Вот быстрый и грязный Python сценарий, чтобы дать вам представление о том, как выполнить задание:

#!/usr/bin/env python
#-*- coding: utf-8 -*-
#
# bt-autoconnect
# Autoconnects Bluetooth Devices to PulseAudio
# (c) Takkat Nebuk
# Licence: GPLv3
# usage:
# bt-autoconnect <MAC> <timeout>

import subprocess
import time
import sys
import string

cli_options = sys.argv

def main():
    MAC = cli_options[1]
    timeout = cli_options[2]
    PMAC = string.replace(MAC,':','_') # PA don't know ':', needs '_'
    pa_args = ['pacmd set-default-sink bluez_sink.' + PMAC]
    bt_args = ['sdptool browse ' + MAC]
    err = False
    while err == False:
        if subprocess.call(bt_args, shell=True) == 0:
            err = subprocess.call(pa_args, shell=True)
        time.sleep(int(timeout))
    exit()

if __name__ == "__main__":
    main()

Просто скопируйте этот скрипт и сохраните его как bt-autoconnect.py. Сделайте исполняемый файл сценария или запустите его из командной строки (рекомендуется) с помощью cd /script/directory, а затем введите:

python bt-autoconnect.py [MAC] [timeout]

Заменить MAC с помощью MAC вашего устройства Bluetooth (например, 00: 0C: 78: 4F: B6: B5) и установите требуемый тайм-аут (например, 10) в секундах, когда скрипт ищет устройство. Затем этот скрипт будет прослушивать данный MAC каждый тайм-аут для устройства Bluetooth и подключать его к PulseAudio, если он присутствует.

Иногда PulseAudio, похоже, не знает, что устройство присутствует снова после его отключения. С некоторой надеждой pulseaudio -k он снова появляется.

Не нравится, нет GUI, но, по крайней мере, в моих настройках он работал нормально.

bt-autoconnect.py для заинтересованных: stream2ip [ ! d5] с графическим интерфейсом для удобной настройки. Пожалуйста, напишите здесь ошибки или предложения. Спасибо за тестирование.

24
ответ дан 26 May 2018 в 00:55
  • 1
    Вам не нужно оставлять комментарии, чтобы добавить дополнительную информацию. Вместо этого вы можете просто отредактировать его в оригинальном ответе и иметь все в одном месте. – Chris Wilson 20 October 2010 в 17:37
  • 2
    Спасибо, первое решение для меня работало на Ubuntu 14.04. Несмотря на это, вам все равно нужно запустить sudo service pulseaudio restart или перезагрузить, чтобы изменения вступили в силу. – Cerin 24 April 2015 в 22:28

Pulseaudio> = 1.0

Редактируя /etc/pulse/default.pa, мы можем загрузить модуль модуля pulseaudio-switch-on-connect для автоподключения к приемнику звука, как только он будет представлен звуковому серверу pulseaudio , Нам нужно вставить следующую строку

load-module module-switch-on-connect

Предыдущие версии pulseaudio

Устройства Bluetooth распознаются в PulseAudio, как только они присутствуют. Однако подключение должно выполняться вручную в настройках звука. Существует графический интерфейс, который позволяет подключаться к BT-устройствам одним нажатием (stream2ip).

module-switch-on-connect Из версии 0.2.5 stream2ip позволяет автоматически подключаться к устройствам Bluetooth.

Изменить: вы можете настроить свой синий (например, с помощью pactl или в настройках конфигурации) с возвратом к внутреннему аудио, если нет Bluetooth-устройства.

Edit: Вот быстрый и грязный Python сценарий, чтобы дать вам представление о том, как выполнить задание:

#!/usr/bin/env python #-*- coding: utf-8 -*- # # bt-autoconnect # Autoconnects Bluetooth Devices to PulseAudio # (c) Takkat Nebuk # Licence: GPLv3 # usage: # bt-autoconnect <MAC> <timeout> import subprocess import time import sys import string cli_options = sys.argv def main(): MAC = cli_options[1] timeout = cli_options[2] PMAC = string.replace(MAC,':','_') # PA don't know ':', needs '_' pa_args = ['pacmd set-default-sink bluez_sink.' + PMAC] bt_args = ['sdptool browse ' + MAC] err = False while err == False: if subprocess.call(bt_args, shell=True) == 0: err = subprocess.call(pa_args, shell=True) time.sleep(int(timeout)) exit() if __name__ == "__main__": main()

Просто скопируйте этот скрипт и сохраните его как bt-autoconnect.py. Сделайте исполняемый файл сценария или запустите его из командной строки (рекомендуется) с помощью cd /script/directory, а затем введите:

python bt-autoconnect.py [MAC] [timeout]

Заменить MAC с помощью MAC вашего устройства Bluetooth (например, 00: 0C: 78: 4F: B6: B5) и установите требуемый тайм-аут (например, 10) в секундах, когда скрипт ищет устройство. Затем этот скрипт будет прослушивать данный MAC каждый тайм-аут для устройства Bluetooth и подключать его к PulseAudio, если он присутствует.

Иногда PulseAudio, похоже, не знает, что устройство присутствует снова после его отключения. С некоторой надеждой pulseaudio -k он снова появляется.

Не нравится, нет GUI, но, по крайней мере, в моих настройках он работал нормально.

bt-autoconnect.py для заинтересованных: stream2ip [ ! d5] с графическим интерфейсом для удобной настройки. Пожалуйста, напишите здесь ошибки или предложения. Спасибо за тестирование.

24
ответ дан 25 July 2018 в 23:03

Pulseaudio> = 1.0

Редактируя /etc/pulse/default.pa, мы можем загрузить модуль модуля pulseaudio-switch-on-connect для автоподключения к приемнику звука, как только он будет представлен звуковому серверу pulseaudio , Нам нужно вставить следующую строку

load-module module-switch-on-connect

Предыдущие версии pulseaudio

Устройства Bluetooth распознаются в PulseAudio, как только они присутствуют. Однако подключение должно выполняться вручную в настройках звука. Существует графический интерфейс, который позволяет подключаться к BT-устройствам одним нажатием (stream2ip).

module-switch-on-connect Из версии 0.2.5 stream2ip позволяет автоматически подключаться к устройствам Bluetooth.

Изменить: вы можете настроить свой синий (например, с помощью pactl или в настройках конфигурации) с возвратом к внутреннему аудио, если нет Bluetooth-устройства.

Edit: Вот быстрый и грязный Python сценарий, чтобы дать вам представление о том, как выполнить задание:

#!/usr/bin/env python #-*- coding: utf-8 -*- # # bt-autoconnect # Autoconnects Bluetooth Devices to PulseAudio # (c) Takkat Nebuk # Licence: GPLv3 # usage: # bt-autoconnect <MAC> <timeout> import subprocess import time import sys import string cli_options = sys.argv def main(): MAC = cli_options[1] timeout = cli_options[2] PMAC = string.replace(MAC,':','_') # PA don't know ':', needs '_' pa_args = ['pacmd set-default-sink bluez_sink.' + PMAC] bt_args = ['sdptool browse ' + MAC] err = False while err == False: if subprocess.call(bt_args, shell=True) == 0: err = subprocess.call(pa_args, shell=True) time.sleep(int(timeout)) exit() if __name__ == "__main__": main()

Просто скопируйте этот скрипт и сохраните его как bt-autoconnect.py. Сделайте исполняемый файл сценария или запустите его из командной строки (рекомендуется) с помощью cd /script/directory, а затем введите:

python bt-autoconnect.py [MAC] [timeout]

Заменить MAC с помощью MAC вашего устройства Bluetooth (например, 00: 0C: 78: 4F: B6: B5) и установите требуемый тайм-аут (например, 10) в секундах, когда скрипт ищет устройство. Затем этот скрипт будет прослушивать данный MAC каждый тайм-аут для устройства Bluetooth и подключать его к PulseAudio, если он присутствует.

Иногда PulseAudio, похоже, не знает, что устройство присутствует снова после его отключения. С некоторой надеждой pulseaudio -k он снова появляется.

Не нравится, нет GUI, но, по крайней мере, в моих настройках он работал нормально.

bt-autoconnect.py для заинтересованных: stream2ip [ ! d5] с графическим интерфейсом для удобной настройки. Пожалуйста, напишите здесь ошибки или предложения. Спасибо за тестирование.

24
ответ дан 27 July 2018 в 02:19

Pulseaudio> = 1.0

Редактируя /etc/pulse/default.pa, мы можем загрузить модуль модуля pulseaudio-switch-on-connect для автоподключения к приемнику звука, как только он будет представлен звуковому серверу pulseaudio , Нам нужно вставить следующую строку

load-module module-switch-on-connect

Предыдущие версии pulseaudio

Устройства Bluetooth распознаются в PulseAudio, как только они присутствуют. Однако подключение должно выполняться вручную в настройках звука. Существует графический интерфейс, который позволяет подключаться к BT-устройствам одним нажатием (stream2ip).

module-switch-on-connect Из версии 0.2.5 stream2ip позволяет автоматически подключаться к устройствам Bluetooth.

Изменить: вы можете настроить свой синий (например, с помощью pactl или в настройках конфигурации) с возвратом к внутреннему аудио, если нет Bluetooth-устройства.

Edit: Вот быстрый и грязный Python сценарий, чтобы дать вам представление о том, как выполнить задание:

#!/usr/bin/env python #-*- coding: utf-8 -*- # # bt-autoconnect # Autoconnects Bluetooth Devices to PulseAudio # (c) Takkat Nebuk # Licence: GPLv3 # usage: # bt-autoconnect <MAC> <timeout> import subprocess import time import sys import string cli_options = sys.argv def main(): MAC = cli_options[1] timeout = cli_options[2] PMAC = string.replace(MAC,':','_') # PA don't know ':', needs '_' pa_args = ['pacmd set-default-sink bluez_sink.' + PMAC] bt_args = ['sdptool browse ' + MAC] err = False while err == False: if subprocess.call(bt_args, shell=True) == 0: err = subprocess.call(pa_args, shell=True) time.sleep(int(timeout)) exit() if __name__ == "__main__": main()

Просто скопируйте этот скрипт и сохраните его как bt-autoconnect.py. Сделайте исполняемый файл сценария или запустите его из командной строки (рекомендуется) с помощью cd /script/directory, а затем введите:

python bt-autoconnect.py [MAC] [timeout]

Заменить MAC с помощью MAC вашего устройства Bluetooth (например, 00: 0C: 78: 4F: B6: B5) и установите требуемый тайм-аут (например, 10) в секундах, когда скрипт ищет устройство. Затем этот скрипт будет прослушивать данный MAC каждый тайм-аут для устройства Bluetooth и подключать его к PulseAudio, если он присутствует.

Иногда PulseAudio, похоже, не знает, что устройство присутствует снова после его отключения. С некоторой надеждой pulseaudio -k он снова появляется.

Не нравится, нет GUI, но, по крайней мере, в моих настройках он работал нормально.

bt-autoconnect.py для заинтересованных: stream2ip [ ! d5] с графическим интерфейсом для удобной настройки. Пожалуйста, напишите здесь ошибки или предложения. Спасибо за тестирование.

24
ответ дан 31 July 2018 в 10:33

Pulseaudio> = 1.0

Редактируя /etc/pulse/default.pa, мы можем загрузить модуль модуля pulseaudio-switch-on-connect для автоподключения к приемнику звука, как только он будет представлен звуковому серверу pulseaudio , Нам нужно вставить следующую строку

load-module module-switch-on-connect

Предыдущие версии pulseaudio

Устройства Bluetooth распознаются в PulseAudio, как только они присутствуют. Однако подключение должно выполняться вручную в настройках звука. Существует графический интерфейс, который позволяет подключаться к BT-устройствам одним нажатием (stream2ip).

module-switch-on-connect Из версии 0.2.5 stream2ip позволяет автоматически подключаться к устройствам Bluetooth.

Изменить: вы можете настроить свой синий (например, с помощью pactl или в настройках конфигурации) с возвратом к внутреннему аудио, если нет Bluetooth-устройства.

Edit: Вот быстрый и грязный Python сценарий, чтобы дать вам представление о том, как выполнить задание:

#!/usr/bin/env python #-*- coding: utf-8 -*- # # bt-autoconnect # Autoconnects Bluetooth Devices to PulseAudio # (c) Takkat Nebuk # Licence: GPLv3 # usage: # bt-autoconnect <MAC> <timeout> import subprocess import time import sys import string cli_options = sys.argv def main(): MAC = cli_options[1] timeout = cli_options[2] PMAC = string.replace(MAC,':','_') # PA don't know ':', needs '_' pa_args = ['pacmd set-default-sink bluez_sink.' + PMAC] bt_args = ['sdptool browse ' + MAC] err = False while err == False: if subprocess.call(bt_args, shell=True) == 0: err = subprocess.call(pa_args, shell=True) time.sleep(int(timeout)) exit() if __name__ == "__main__": main()

Просто скопируйте этот скрипт и сохраните его как bt-autoconnect.py. Сделайте исполняемый файл сценария или запустите его из командной строки (рекомендуется) с помощью cd /script/directory, а затем введите:

python bt-autoconnect.py [MAC] [timeout]

Заменить MAC с помощью MAC вашего устройства Bluetooth (например, 00: 0C: 78: 4F: B6: B5) и установите требуемый тайм-аут (например, 10) в секундах, когда скрипт ищет устройство. Затем этот скрипт будет прослушивать данный MAC каждый тайм-аут для устройства Bluetooth и подключать его к PulseAudio, если он присутствует.

Иногда PulseAudio, похоже, не знает, что устройство присутствует снова после его отключения. С некоторой надеждой pulseaudio -k он снова появляется.

Не нравится, нет GUI, но, по крайней мере, в моих настройках он работал нормально.

bt-autoconnect.py для заинтересованных: stream2ip [ ! d5] с графическим интерфейсом для удобной настройки. Пожалуйста, напишите здесь ошибки или предложения. Спасибо за тестирование.

24
ответ дан 31 July 2018 в 11:36

Pulseaudio> = 1.0

Редактируя /etc/pulse/default.pa, мы можем загрузить модуль модуля pulseaudio-switch-on-connect для автоподключения к приемнику звука, как только он будет представлен звуковому серверу pulseaudio , Нам нужно вставить следующую строку

load-module module-switch-on-connect

Предыдущие версии pulseaudio

Устройства Bluetooth распознаются в PulseAudio, как только они присутствуют. Однако подключение должно выполняться вручную в настройках звука. Существует графический интерфейс, который позволяет подключаться к BT-устройствам одним нажатием (stream2ip).

module-switch-on-connect Из версии 0.2.5 stream2ip позволяет автоматически подключаться к устройствам Bluetooth.

Изменить: вы можете настроить свой синий (например, с помощью pactl или в настройках конфигурации) с возвратом к внутреннему аудио, если нет Bluetooth-устройства.

Edit: Вот быстрый и грязный Python сценарий, чтобы дать вам представление о том, как выполнить задание:

#!/usr/bin/env python #-*- coding: utf-8 -*- # # bt-autoconnect # Autoconnects Bluetooth Devices to PulseAudio # (c) Takkat Nebuk # Licence: GPLv3 # usage: # bt-autoconnect <MAC> <timeout> import subprocess import time import sys import string cli_options = sys.argv def main(): MAC = cli_options[1] timeout = cli_options[2] PMAC = string.replace(MAC,':','_') # PA don't know ':', needs '_' pa_args = ['pacmd set-default-sink bluez_sink.' + PMAC] bt_args = ['sdptool browse ' + MAC] err = False while err == False: if subprocess.call(bt_args, shell=True) == 0: err = subprocess.call(pa_args, shell=True) time.sleep(int(timeout)) exit() if __name__ == "__main__": main()

Просто скопируйте этот скрипт и сохраните его как bt-autoconnect.py. Сделайте исполняемый файл сценария или запустите его из командной строки (рекомендуется) с помощью cd /script/directory, а затем введите:

python bt-autoconnect.py [MAC] [timeout]

Заменить MAC с помощью MAC вашего устройства Bluetooth (например, 00: 0C: 78: 4F: B6: B5) и установите требуемый тайм-аут (например, 10) в секундах, когда скрипт ищет устройство. Затем этот скрипт будет прослушивать данный MAC каждый тайм-аут для устройства Bluetooth и подключать его к PulseAudio, если он присутствует.

Иногда PulseAudio, похоже, не знает, что устройство присутствует снова после его отключения. С некоторой надеждой pulseaudio -k он снова появляется.

Не нравится, нет GUI, но, по крайней мере, в моих настройках он работал нормально.

bt-autoconnect.py для заинтересованных: stream2ip [ ! d5] с графическим интерфейсом для удобной настройки. Пожалуйста, напишите здесь ошибки или предложения. Спасибо за тестирование.

24
ответ дан 2 August 2018 в 04:24

Pulseaudio> = 1.0

Редактируя /etc/pulse/default.pa , мы можем загрузить модуль модуля pulseaudio-switch-on-connect для автоподключения к аудио как только он будет представлен звуковому серверу pulseaudio. Нам нужно вставить следующую строку

  модуль load-module-switch-on-connect  

Предыдущие версии pulseaudio

Bluetooth устройства распознаются в PulseAudio, как только они присутствуют. Однако подключение должно выполняться вручную в настройках звука. Существует графический интерфейс, который позволяет подключаться к BT-устройствам одним нажатием ( stream2ip ).

Изменить: с версии 0.2.5 stream2ip позволяет автоматически подключаться к устройствам Bluetooth.

Изменить: вы можете настроить свое устройство bluez как устройство по умолчанию (например, с помощью pactl или в config settings) с возвратом к внутреннему аудио, если Bluetooth-устройство отсутствует.

Изменить: Вот быстрый и грязный сценарий Python, чтобы дать вам представление о том, как выполнить задание:

  #! / usr / bin / env python # - * - кодирование: utf-8 - * - # # bt-autoconnect # Автоподключает устройства Bluetooth к PulseAudio # (c) Takkat Nebuk # Лицензия: использование GPLv3 #: #  bt-autoconnect & lt; MAC & gt;  & Lt; & таймаут GT;  import subprocess import time import sys import string cli_options = sys.argv def main (): MAC = cli_options [1] timeout = cli_options [2] PMAC = string.replace (MAC, ':', '_') # PA don '  t know ':', needs '_' pa_args = ['pacmd set-default-sink bluez_sink.'  + PMAC] bt_args = ['sdptool browse' + MAC] err = False while err == False: если subprocess.call (bt_args, shell = True) == 0: err = subprocess.call (pa_args, shell = True) time  .sleep (int (timeout)) exit (), если __name__ == "__main__": main ()  

Просто скопируйте этот скрипт и сохраните его как bt-autoconnect.py. Сделайте сценарий исполняемым или запустите его из командной строки (рекомендуется) с помощью cd / script / directory , а затем введите:

  python bt-autoconnect.py [MAC] [  тайм-аут]  

Заменить MAC на MAC вашего устройства Bluetooth (например, 00: 0C: 78: 4F: B6: B5) и установить желаемый timeout (например, 10) в секундах, когда скрипт ищет устройство. Затем этот скрипт будет прослушивать данный MAC каждый тайм-аут секунд для устройства Bluetooth и подключает его к PulseAudio, если он присутствует.

Иногда PulseAudio, похоже, не знает, что устройство присутствует снова после того, как оно было отключено. С некоторой надеждой pulseaudio -k заставляет его снова появляться.

Не нравится, нет графического интерфейса, но, по крайней мере, в моих настройках он работал нормально.

Редактировать для заинтересованных: bt-autoconnect с графическим интерфейсом для удобной настройки выпущенный. Пожалуйста, напишите здесь ошибки или предложения. Спасибо за тестирование.

24
ответ дан 4 August 2018 в 20:56

Pulseaudio> = 1.0

Редактируя /etc/pulse/default.pa , мы можем загрузить модуль модуля pulseaudio-switch-on-connect для автоподключения к аудио как только он будет представлен звуковому серверу pulseaudio. Нам нужно вставить следующую строку

  модуль load-module-switch-on-connect  

Предыдущие версии pulseaudio

Bluetooth устройства распознаются в PulseAudio, как только они присутствуют. Однако подключение должно выполняться вручную в настройках звука. Существует графический интерфейс, который позволяет подключаться к BT-устройствам одним нажатием ( stream2ip ).

Изменить: с версии 0.2.5 stream2ip позволяет автоматически подключаться к устройствам Bluetooth.

Изменить: вы можете настроить свое устройство bluez как устройство по умолчанию (например, с помощью pactl или в config settings) с возвратом к внутреннему аудио, если Bluetooth-устройство отсутствует.

Изменить: Вот быстрый и грязный сценарий Python, чтобы дать вам представление о том, как выполнить задание:

  #! / usr / bin / env python # - * - кодирование: utf-8 - * - # # bt-autoconnect # Автоподключает устройства Bluetooth к PulseAudio # (c) Takkat Nebuk # Лицензия: использование GPLv3 #: #  bt-autoconnect & lt; MAC & gt;  & Lt; & таймаут GT;  import subprocess import time import sys import string cli_options = sys.argv def main (): MAC = cli_options [1] timeout = cli_options [2] PMAC = string.replace (MAC, ':', '_') # PA don '  t know ':', needs '_' pa_args = ['pacmd set-default-sink bluez_sink.'  + PMAC] bt_args = ['sdptool browse' + MAC] err = False while err == False: если subprocess.call (bt_args, shell = True) == 0: err = subprocess.call (pa_args, shell = True) time  .sleep (int (timeout)) exit (), если __name__ == "__main__": main ()  

Просто скопируйте этот скрипт и сохраните его как bt-autoconnect.py. Сделайте сценарий исполняемым или запустите его из командной строки (рекомендуется) с помощью cd / script / directory , а затем введите:

  python bt-autoconnect.py [MAC] [  тайм-аут]  

Заменить MAC на MAC вашего устройства Bluetooth (например, 00: 0C: 78: 4F: B6: B5) и установить желаемый timeout (например, 10) в секундах, когда скрипт ищет устройство. Затем этот скрипт будет прослушивать данный MAC каждый тайм-аут секунд для устройства Bluetooth и подключает его к PulseAudio, если он присутствует.

Иногда PulseAudio, похоже, не знает, что устройство присутствует снова после того, как оно было отключено. С некоторой надеждой pulseaudio -k заставляет его снова появляться.

Не нравится, нет графического интерфейса, но, по крайней мере, в моих настройках он работал нормально.

Редактировать для заинтересованных: bt-autoconnect с графическим интерфейсом для удобной настройки выпущенный. Пожалуйста, напишите здесь ошибки или предложения. Спасибо за тестирование.

24
ответ дан 6 August 2018 в 04:28

Pulseaudio> = 1.0

Редактируя /etc/pulse/default.pa , мы можем загрузить модуль модуля pulseaudio-switch-on-connect для автоподключения к аудио как только он будет представлен звуковому серверу pulseaudio. Нам нужно вставить следующую строку

  модуль load-module-switch-on-connect  

Предыдущие версии pulseaudio

Bluetooth устройства распознаются в PulseAudio, как только они присутствуют. Однако подключение должно выполняться вручную в настройках звука. Существует графический интерфейс, который позволяет подключаться к BT-устройствам одним нажатием ( stream2ip ).

Изменить: с версии 0.2.5 stream2ip позволяет автоматически подключаться к устройствам Bluetooth.

Изменить: вы можете настроить свое устройство bluez как устройство по умолчанию (например, с помощью pactl или в config settings) с возвратом к внутреннему аудио, если Bluetooth-устройство отсутствует.

Изменить: Вот быстрый и грязный сценарий Python, чтобы дать вам представление о том, как выполнить задание:

  #! / usr / bin / env python # - * - кодирование: utf-8 - * - # # bt-autoconnect # Автоподключает устройства Bluetooth к PulseAudio # (c) Takkat Nebuk # Лицензия: использование GPLv3 #: #  bt-autoconnect & lt; MAC & gt;  & Lt; & таймаут GT;  import subprocess import time import sys import string cli_options = sys.argv def main (): MAC = cli_options [1] timeout = cli_options [2] PMAC = string.replace (MAC, ':', '_') # PA don '  t know ':', needs '_' pa_args = ['pacmd set-default-sink bluez_sink.'  + PMAC] bt_args = ['sdptool browse' + MAC] err = False while err == False: если subprocess.call (bt_args, shell = True) == 0: err = subprocess.call (pa_args, shell = True) time  .sleep (int (timeout)) exit (), если __name__ == "__main__": main ()  

Просто скопируйте этот скрипт и сохраните его как bt-autoconnect.py. Сделайте сценарий исполняемым или запустите его из командной строки (рекомендуется) с помощью cd / script / directory , а затем введите:

  python bt-autoconnect.py [MAC] [  тайм-аут]  

Заменить MAC на MAC вашего устройства Bluetooth (например, 00: 0C: 78: 4F: B6: B5) и установить желаемый timeout (например, 10) в секундах, когда скрипт ищет устройство. Затем этот скрипт будет прослушивать данный MAC каждый тайм-аут секунд для устройства Bluetooth и подключает его к PulseAudio, если он присутствует.

Иногда PulseAudio, похоже, не знает, что устройство присутствует снова после того, как оно было отключено. С некоторой надеждой pulseaudio -k заставляет его снова появляться.

Не нравится, нет графического интерфейса, но, по крайней мере, в моих настройках он работал нормально.

Редактировать для заинтересованных: bt-autoconnect с графическим интерфейсом для удобной настройки выпущенный. Пожалуйста, напишите здесь ошибки или предложения. Спасибо за тестирование.

24
ответ дан 7 August 2018 в 22:36

Pulseaudio> = 1.0

Редактируя /etc/pulse/default.pa , мы можем загрузить модуль модуля pulseaudio-switch-on-connect для автоподключения к аудио как только он будет представлен звуковому серверу pulseaudio. Нам нужно вставить следующую строку

  модуль load-module-switch-on-connect  

Предыдущие версии pulseaudio

Bluetooth устройства распознаются в PulseAudio, как только они присутствуют. Однако подключение должно выполняться вручную в настройках звука. Существует графический интерфейс, который позволяет подключаться к BT-устройствам одним нажатием ( stream2ip ).

Изменить: с версии 0.2.5 stream2ip позволяет автоматически подключаться к устройствам Bluetooth.

Изменить: вы можете настроить свое устройство bluez как устройство по умолчанию (например, с помощью pactl или в config settings) с возвратом к внутреннему аудио, если Bluetooth-устройство отсутствует.

Изменить: Вот быстрый и грязный сценарий Python, чтобы дать вам представление о том, как выполнить задание:

  #! / usr / bin / env python # - * - кодирование: utf-8 - * - # # bt-autoconnect # Автоподключает устройства Bluetooth к PulseAudio # (c) Takkat Nebuk # Лицензия: использование GPLv3 #: #  bt-autoconnect & lt; MAC & gt;  & Lt; & таймаут GT;  import subprocess import time import sys import string cli_options = sys.argv def main (): MAC = cli_options [1] timeout = cli_options [2] PMAC = string.replace (MAC, ':', '_') # PA don '  t know ':', needs '_' pa_args = ['pacmd set-default-sink bluez_sink.'  + PMAC] bt_args = ['sdptool browse' + MAC] err = False while err == False: если subprocess.call (bt_args, shell = True) == 0: err = subprocess.call (pa_args, shell = True) time  .sleep (int (timeout)) exit (), если __name__ == "__main__": main ()  

Просто скопируйте этот скрипт и сохраните его как bt-autoconnect.py. Сделайте сценарий исполняемым или запустите его из командной строки (рекомендуется) с помощью cd / script / directory , а затем введите:

  python bt-autoconnect.py [MAC] [  тайм-аут]  

Заменить MAC на MAC вашего устройства Bluetooth (например, 00: 0C: 78: 4F: B6: B5) и установить желаемый timeout (например, 10) в секундах, когда скрипт ищет устройство. Затем этот скрипт будет прослушивать данный MAC каждый тайм-аут секунд для устройства Bluetooth и подключает его к PulseAudio, если он присутствует.

Иногда PulseAudio, похоже, не знает, что устройство присутствует снова после того, как оно было отключено. С некоторой надеждой pulseaudio -k заставляет его снова появляться.

Не нравится, нет графического интерфейса, но, по крайней мере, в моих настройках он работал нормально.

Редактировать для заинтересованных: bt-autoconnect с графическим интерфейсом для удобной настройки выпущенный. Пожалуйста, напишите здесь ошибки или предложения. Спасибо за тестирование.

24
ответ дан 10 August 2018 в 10:43

Pulseaudio> = 1.0

Редактируя /etc/pulse/default.pa , мы можем загрузить модуль модуля pulseaudio-switch-on-connect для автоподключения к аудио как только он будет представлен звуковому серверу pulseaudio. Нам нужно вставить следующую строку

  модуль load-module-switch-on-connect  

Предыдущие версии pulseaudio

Bluetooth устройства распознаются в PulseAudio, как только они присутствуют. Однако подключение должно выполняться вручную в настройках звука. Существует графический интерфейс, который позволяет подключаться к BT-устройствам одним нажатием ( stream2ip ).

Изменить: с версии 0.2.5 stream2ip позволяет автоматически подключаться к устройствам Bluetooth.

Изменить: вы можете настроить свое устройство bluez как устройство по умолчанию (например, с помощью pactl или в config settings) с возвратом к внутреннему аудио, если Bluetooth-устройство отсутствует.

Изменить: Вот быстрый и грязный сценарий Python, чтобы дать вам представление о том, как выполнить задание:

  #! / usr / bin / env python # - * - кодирование: utf-8 - * - # # bt-autoconnect # Автоподключает устройства Bluetooth к PulseAudio # (c) Takkat Nebuk # Лицензия: использование GPLv3 #: #  bt-autoconnect & lt; MAC & gt;  & Lt; & таймаут GT;  import subprocess import time import sys import string cli_options = sys.argv def main (): MAC = cli_options [1] timeout = cli_options [2] PMAC = string.replace (MAC, ':', '_') # PA don '  t know ':', needs '_' pa_args = ['pacmd set-default-sink bluez_sink.'  + PMAC] bt_args = ['sdptool browse' + MAC] err = False while err == False: если subprocess.call (bt_args, shell = True) == 0: err = subprocess.call (pa_args, shell = True) time  .sleep (int (timeout)) exit (), если __name__ == "__main__": main ()  

Просто скопируйте этот скрипт и сохраните его как bt-autoconnect.py. Сделайте сценарий исполняемым или запустите его из командной строки (рекомендуется) с помощью cd / script / directory , а затем введите:

  python bt-autoconnect.py [MAC] [  тайм-аут]  

Заменить MAC на MAC вашего устройства Bluetooth (например, 00: 0C: 78: 4F: B6: B5) и установить желаемый timeout (например, 10) в секундах, когда скрипт ищет устройство. Затем этот скрипт будет прослушивать данный MAC каждый тайм-аут секунд для устройства Bluetooth и подключает его к PulseAudio, если он присутствует.

Иногда PulseAudio, похоже, не знает, что устройство присутствует снова после того, как оно было отключено. С некоторой надеждой pulseaudio -k заставляет его снова появляться.

Не нравится, нет графического интерфейса, но, по крайней мере, в моих настройках он работал нормально.

Редактировать для заинтересованных: bt-autoconnect с графическим интерфейсом для удобной настройки выпущенный. Пожалуйста, напишите здесь ошибки или предложения. Спасибо за тестирование.

24
ответ дан 13 August 2018 в 17:17
  • 1
    Вам не нужно оставлять комментарии, чтобы добавить дополнительную информацию. Вместо этого вы можете просто отредактировать его в оригинальном ответе и иметь все в одном месте. – Chris Wilson 20 October 2010 в 17:37
  • 2
    Спасибо, первое решение для меня работало на Ubuntu 14.04. Несмотря на это, вам все равно нужно запустить sudo service pulseaudio restart или перезагрузить, чтобы изменения вступили в силу. – Cerin 24 April 2015 в 22:28

К сожалению, я только сейчас видел ответ от Takkat. Кажется, это лучший способ, чем мой.

Думаю, это может быть актуально для Pulseaudio & lt; 1,0. Он не использует опрос, но прослушивает события Bluetooth на dbus:

#!/usr/bin/python

# based on monitor-bluetooth
# Changes by Domen Puncer <domen@cba.si>

import gobject
import dbus
import dbus.mainloop.glib
import os


# we want this event: {AudioSource.PropertyChanged} [/org/bluez/16797/hci0/dev_00_24_7E_51_F7_52] State = playing
# and when that happens: pactl load-module module-loopback source=bluez_source.00_24_7E_51_F7_52 sink=alsa_output.pci-0000_00_1b.0.analog-stereo
def property_changed(name, value, path, interface):
    iface = interface[interface.rfind(".") + 1:]
    val = str(value)
    print "{%s.PropertyChanged} [%s] %s = %s" % (iface, path, name, val)
    if iface == "AudioSource" and name == "State" and val == "playing":
        bt_addr = "_".join(path.split('/')[-1].split('_')[1:])
        cmd = "pactl load-module module-loopback source=bluez_source.%s sink=alsa_output.pci-0000_00_1b.0.analog-stereo" % bt_addr
        os.system(cmd)


def object_signal(value, path, interface, member):
    iface = interface[interface.rfind(".") + 1:]
    val = str(value)
    print "{%s.%s} [%s] Path = %s" % (iface, member, path, val)

if __name__ == '__main__':
    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

    bus = dbus.SystemBus()

    bus.add_signal_receiver(property_changed, bus_name="org.bluez", signal_name = "PropertyChanged", path_keyword="path", interface_keyword="interface")

    mainloop = gobject.MainLoop()
    mainloop.run()
0
ответ дан 26 May 2018 в 00:55

К сожалению, я только сейчас видел ответ от Takkat. Кажется, это лучший способ, чем мой.

Думаю, это может быть актуально для Pulseaudio & lt; 1,0. Он не использует опрос, но прослушивает события Bluetooth на dbus:

#!/usr/bin/python # based on monitor-bluetooth # Changes by Domen Puncer <domen@cba.si> import gobject import dbus import dbus.mainloop.glib import os # we want this event: {AudioSource.PropertyChanged} [/org/bluez/16797/hci0/dev_00_24_7E_51_F7_52] State = playing # and when that happens: pactl load-module module-loopback source=bluez_source.00_24_7E_51_F7_52 sink=alsa_output.pci-0000_00_1b.0.analog-stereo def property_changed(name, value, path, interface): iface = interface[interface.rfind(".") + 1:] val = str(value) print "{%s.PropertyChanged} [%s] %s = %s" % (iface, path, name, val) if iface == "AudioSource" and name == "State" and val == "playing": bt_addr = "_".join(path.split('/')[-1].split('_')[1:]) cmd = "pactl load-module module-loopback source=bluez_source.%s sink=alsa_output.pci-0000_00_1b.0.analog-stereo" % bt_addr os.system(cmd) def object_signal(value, path, interface, member): iface = interface[interface.rfind(".") + 1:] val = str(value) print "{%s.%s} [%s] Path = %s" % (iface, member, path, val) if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() bus.add_signal_receiver(property_changed, bus_name="org.bluez", signal_name = "PropertyChanged", path_keyword="path", interface_keyword="interface") mainloop = gobject.MainLoop() mainloop.run()
0
ответ дан 25 July 2018 в 23:03

К сожалению, я только сейчас видел ответ от Takkat. Кажется, это лучший способ, чем мой.

Думаю, это может быть актуально для Pulseaudio & lt; 1,0. Он не использует опрос, но прослушивает события Bluetooth на dbus:

#!/usr/bin/python # based on monitor-bluetooth # Changes by Domen Puncer <domen@cba.si> import gobject import dbus import dbus.mainloop.glib import os # we want this event: {AudioSource.PropertyChanged} [/org/bluez/16797/hci0/dev_00_24_7E_51_F7_52] State = playing # and when that happens: pactl load-module module-loopback source=bluez_source.00_24_7E_51_F7_52 sink=alsa_output.pci-0000_00_1b.0.analog-stereo def property_changed(name, value, path, interface): iface = interface[interface.rfind(".") + 1:] val = str(value) print "{%s.PropertyChanged} [%s] %s = %s" % (iface, path, name, val) if iface == "AudioSource" and name == "State" and val == "playing": bt_addr = "_".join(path.split('/')[-1].split('_')[1:]) cmd = "pactl load-module module-loopback source=bluez_source.%s sink=alsa_output.pci-0000_00_1b.0.analog-stereo" % bt_addr os.system(cmd) def object_signal(value, path, interface, member): iface = interface[interface.rfind(".") + 1:] val = str(value) print "{%s.%s} [%s] Path = %s" % (iface, member, path, val) if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() bus.add_signal_receiver(property_changed, bus_name="org.bluez", signal_name = "PropertyChanged", path_keyword="path", interface_keyword="interface") mainloop = gobject.MainLoop() mainloop.run()
0
ответ дан 27 July 2018 в 02:19

К сожалению, я только сейчас видел ответ от Takkat. Кажется, это лучший способ, чем мой.

Думаю, это может быть актуально для Pulseaudio & lt; 1,0. Он не использует опрос, но прослушивает события Bluetooth на dbus:

#!/usr/bin/python # based on monitor-bluetooth # Changes by Domen Puncer <domen@cba.si> import gobject import dbus import dbus.mainloop.glib import os # we want this event: {AudioSource.PropertyChanged} [/org/bluez/16797/hci0/dev_00_24_7E_51_F7_52] State = playing # and when that happens: pactl load-module module-loopback source=bluez_source.00_24_7E_51_F7_52 sink=alsa_output.pci-0000_00_1b.0.analog-stereo def property_changed(name, value, path, interface): iface = interface[interface.rfind(".") + 1:] val = str(value) print "{%s.PropertyChanged} [%s] %s = %s" % (iface, path, name, val) if iface == "AudioSource" and name == "State" and val == "playing": bt_addr = "_".join(path.split('/')[-1].split('_')[1:]) cmd = "pactl load-module module-loopback source=bluez_source.%s sink=alsa_output.pci-0000_00_1b.0.analog-stereo" % bt_addr os.system(cmd) def object_signal(value, path, interface, member): iface = interface[interface.rfind(".") + 1:] val = str(value) print "{%s.%s} [%s] Path = %s" % (iface, member, path, val) if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() bus.add_signal_receiver(property_changed, bus_name="org.bluez", signal_name = "PropertyChanged", path_keyword="path", interface_keyword="interface") mainloop = gobject.MainLoop() mainloop.run()
0
ответ дан 31 July 2018 в 10:33

К сожалению, я только сейчас видел ответ от Takkat. Кажется, это лучший способ, чем мой.

Думаю, это может быть актуально для Pulseaudio & lt; 1,0. Он не использует опрос, но прослушивает события Bluetooth на dbus:

#!/usr/bin/python # based on monitor-bluetooth # Changes by Domen Puncer <domen@cba.si> import gobject import dbus import dbus.mainloop.glib import os # we want this event: {AudioSource.PropertyChanged} [/org/bluez/16797/hci0/dev_00_24_7E_51_F7_52] State = playing # and when that happens: pactl load-module module-loopback source=bluez_source.00_24_7E_51_F7_52 sink=alsa_output.pci-0000_00_1b.0.analog-stereo def property_changed(name, value, path, interface): iface = interface[interface.rfind(".") + 1:] val = str(value) print "{%s.PropertyChanged} [%s] %s = %s" % (iface, path, name, val) if iface == "AudioSource" and name == "State" and val == "playing": bt_addr = "_".join(path.split('/')[-1].split('_')[1:]) cmd = "pactl load-module module-loopback source=bluez_source.%s sink=alsa_output.pci-0000_00_1b.0.analog-stereo" % bt_addr os.system(cmd) def object_signal(value, path, interface, member): iface = interface[interface.rfind(".") + 1:] val = str(value) print "{%s.%s} [%s] Path = %s" % (iface, member, path, val) if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() bus.add_signal_receiver(property_changed, bus_name="org.bluez", signal_name = "PropertyChanged", path_keyword="path", interface_keyword="interface") mainloop = gobject.MainLoop() mainloop.run()
0
ответ дан 31 July 2018 в 11:36

К сожалению, я только сейчас видел ответ от Takkat. Кажется, это лучший способ, чем мой.

Думаю, это может быть актуально для Pulseaudio & lt; 1,0. Он не использует опрос, но прослушивает события Bluetooth на dbus:

#!/usr/bin/python # based on monitor-bluetooth # Changes by Domen Puncer <domen@cba.si> import gobject import dbus import dbus.mainloop.glib import os # we want this event: {AudioSource.PropertyChanged} [/org/bluez/16797/hci0/dev_00_24_7E_51_F7_52] State = playing # and when that happens: pactl load-module module-loopback source=bluez_source.00_24_7E_51_F7_52 sink=alsa_output.pci-0000_00_1b.0.analog-stereo def property_changed(name, value, path, interface): iface = interface[interface.rfind(".") + 1:] val = str(value) print "{%s.PropertyChanged} [%s] %s = %s" % (iface, path, name, val) if iface == "AudioSource" and name == "State" and val == "playing": bt_addr = "_".join(path.split('/')[-1].split('_')[1:]) cmd = "pactl load-module module-loopback source=bluez_source.%s sink=alsa_output.pci-0000_00_1b.0.analog-stereo" % bt_addr os.system(cmd) def object_signal(value, path, interface, member): iface = interface[interface.rfind(".") + 1:] val = str(value) print "{%s.%s} [%s] Path = %s" % (iface, member, path, val) if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() bus.add_signal_receiver(property_changed, bus_name="org.bluez", signal_name = "PropertyChanged", path_keyword="path", interface_keyword="interface") mainloop = gobject.MainLoop() mainloop.run()
0
ответ дан 2 August 2018 в 04:24

К сожалению, я только сейчас видел ответ от Takkat. Кажется, это лучший способ, чем мой.

Думаю, это может быть актуально для Pulseaudio & lt; 1,0. Он не использует опрос, но прослушивает события Bluetooth на dbus:

  #! / Usr / bin / python # на основе монитора bluetooth # Изменения Domen Puncer & lt; domen @ cba.  си & GT;  import gobject import dbus import dbus.mainloop.glib import os # мы хотим это событие: {AudioSource.PropertyChanged} [/ org / bluez / 16797 / hci0 / dev_00_24_7E_51_F7_52] Состояние = воспроизведение # и когда это произойдет: модуль модуля нагрузки pactl-  loopback source = bluez_source.00_24_7E_51_F7_52 sink = alsa_output.pci-0000_00_1b.0.analog-stereo def property_changed (имя, значение, путь, интерфейс): iface = interface [interface.rfind (".") + 1:] val = str  (значение) print "{% s.PropertyChanged} [% s]% s =% s"% (iface, path, name, val) if iface == "AudioSource" и имя == "State" и val == "  play ": bt_addr =" _ ". join (path.split ('/') [- 1] .split ('_') [1:]) cmd =" ​​pactl load-module module-loopback source = bluez_source.%  s: sink = alsa_output.pci-0000_00_1b.0.analog-stereo "% bt_addr os.system (cmd) def object_signal (значение, путь, интерфейс, элемент): iface = interface [interface.rfind (". ") + 1:  ] val = str (значение) print "{% s.% s} [% s] Path =% s"% (iface, member, path, val), если __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop  (s  et_as_default = True) bus = dbus.SystemBus () bus.add_signal_receiver (property_changed, bus_name = "org.bluez", signal_name = "PropertyChanged", path_keyword = "path", interface_keyword = "interface") mainloop = gobject.MainLoop ()  mainloop.run ()  
0
ответ дан 4 August 2018 в 20:56

К сожалению, я только сейчас видел ответ от Takkat. Кажется, это лучший способ, чем мой.

Думаю, это может быть актуально для Pulseaudio & lt; 1,0. Он не использует опрос, но прослушивает события Bluetooth на dbus:

  #! / Usr / bin / python # на основе монитора bluetooth # Изменения Domen Puncer & lt; domen @ cba.  си & GT;  import gobject import dbus import dbus.mainloop.glib import os # мы хотим это событие: {AudioSource.PropertyChanged} [/ org / bluez / 16797 / hci0 / dev_00_24_7E_51_F7_52] Состояние = воспроизведение # и когда это произойдет: модуль модуля нагрузки pactl-  loopback source = bluez_source.00_24_7E_51_F7_52 sink = alsa_output.pci-0000_00_1b.0.analog-stereo def property_changed (имя, значение, путь, интерфейс): iface = interface [interface.rfind (".") + 1:] val = str  (значение) print "{% s.PropertyChanged} [% s]% s =% s"% (iface, path, name, val) if iface == "AudioSource" и имя == "State" и val == "  play ": bt_addr =" _ ". join (path.split ('/') [- 1] .split ('_') [1:]) cmd =" ​​pactl load-module module-loopback source = bluez_source.%  s: sink = alsa_output.pci-0000_00_1b.0.analog-stereo "% bt_addr os.system (cmd) def object_signal (значение, путь, интерфейс, элемент): iface = interface [interface.rfind (". ") + 1:  ] val = str (значение) print "{% s.% s} [% s] Path =% s"% (iface, member, path, val), если __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop  (s  et_as_default = True) bus = dbus.SystemBus () bus.add_signal_receiver (property_changed, bus_name = "org.bluez", signal_name = "PropertyChanged", path_keyword = "path", interface_keyword = "interface") mainloop = gobject.MainLoop ()  mainloop.run ()  
0
ответ дан 6 August 2018 в 04:28

К сожалению, я только сейчас видел ответ от Takkat. Кажется, это лучший способ, чем мой.

Думаю, это может быть актуально для Pulseaudio & lt; 1,0. Он не использует опрос, но прослушивает события Bluetooth на dbus:

  #! / Usr / bin / python # на основе монитора bluetooth # Изменения Domen Puncer & lt; domen @ cba.  си & GT;  import gobject import dbus import dbus.mainloop.glib import os # мы хотим это событие: {AudioSource.PropertyChanged} [/ org / bluez / 16797 / hci0 / dev_00_24_7E_51_F7_52] Состояние = воспроизведение # и когда это произойдет: модуль модуля нагрузки pactl-  loopback source = bluez_source.00_24_7E_51_F7_52 sink = alsa_output.pci-0000_00_1b.0.analog-stereo def property_changed (имя, значение, путь, интерфейс): iface = interface [interface.rfind (".") + 1:] val = str  (значение) print "{% s.PropertyChanged} [% s]% s =% s"% (iface, path, name, val) if iface == "AudioSource" и имя == "State" и val == "  play ": bt_addr =" _ ". join (path.split ('/') [- 1] .split ('_') [1:]) cmd =" ​​pactl load-module module-loopback source = bluez_source.%  s: sink = alsa_output.pci-0000_00_1b.0.analog-stereo "% bt_addr os.system (cmd) def object_signal (значение, путь, интерфейс, элемент): iface = interface [interface.rfind (". ") + 1:  ] val = str (значение) print "{% s.% s} [% s] Path =% s"% (iface, member, path, val), если __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop  (s  et_as_default = True) bus = dbus.SystemBus () bus.add_signal_receiver (property_changed, bus_name = "org.bluez", signal_name = "PropertyChanged", path_keyword = "path", interface_keyword = "interface") mainloop = gobject.MainLoop ()  mainloop.run ()  
0
ответ дан 7 August 2018 в 22:36

К сожалению, я только сейчас видел ответ от Takkat. Кажется, это лучший способ, чем мой.

Думаю, это может быть актуально для Pulseaudio & lt; 1,0. Он не использует опрос, но прослушивает события Bluetooth на dbus:

  #! / Usr / bin / python # на основе монитора bluetooth # Изменения Domen Puncer & lt; domen @ cba.  си & GT;  import gobject import dbus import dbus.mainloop.glib import os # мы хотим это событие: {AudioSource.PropertyChanged} [/ org / bluez / 16797 / hci0 / dev_00_24_7E_51_F7_52] Состояние = воспроизведение # и когда это произойдет: модуль модуля нагрузки pactl-  loopback source = bluez_source.00_24_7E_51_F7_52 sink = alsa_output.pci-0000_00_1b.0.analog-stereo def property_changed (имя, значение, путь, интерфейс): iface = interface [interface.rfind (".") + 1:] val = str  (значение) print "{% s.PropertyChanged} [% s]% s =% s"% (iface, path, name, val) if iface == "AudioSource" и имя == "State" и val == "  play ": bt_addr =" _ ". join (path.split ('/') [- 1] .split ('_') [1:]) cmd =" ​​pactl load-module module-loopback source = bluez_source.%  s: sink = alsa_output.pci-0000_00_1b.0.analog-stereo "% bt_addr os.system (cmd) def object_signal (значение, путь, интерфейс, элемент): iface = interface [interface.rfind (". ") + 1:  ] val = str (значение) print "{% s.% s} [% s] Path =% s"% (iface, member, path, val), если __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop  (s  et_as_default = True) bus = dbus.SystemBus () bus.add_signal_receiver (property_changed, bus_name = "org.bluez", signal_name = "PropertyChanged", path_keyword = "path", interface_keyword = "interface") mainloop = gobject.MainLoop ()  mainloop.run ()  
0
ответ дан 10 August 2018 в 10:43

К сожалению, я только сейчас видел ответ от Takkat. Кажется, это лучший способ, чем мой.

Думаю, это может быть актуально для Pulseaudio & lt; 1,0. Он не использует опрос, но прослушивает события Bluetooth на dbus:

  #! / Usr / bin / python # на основе монитора bluetooth # Изменения Domen Puncer & lt; domen @ cba.  си & GT;  import gobject import dbus import dbus.mainloop.glib import os # мы хотим это событие: {AudioSource.PropertyChanged} [/ org / bluez / 16797 / hci0 / dev_00_24_7E_51_F7_52] Состояние = воспроизведение # и когда это произойдет: модуль модуля нагрузки pactl-  loopback source = bluez_source.00_24_7E_51_F7_52 sink = alsa_output.pci-0000_00_1b.0.analog-stereo def property_changed (имя, значение, путь, интерфейс): iface = interface [interface.rfind (".") + 1:] val = str  (значение) print "{% s.PropertyChanged} [% s]% s =% s"% (iface, path, name, val) if iface == "AudioSource" и имя == "State" и val == "  play ": bt_addr =" _ ". join (path.split ('/') [- 1] .split ('_') [1:]) cmd =" ​​pactl load-module module-loopback source = bluez_source.%  s: sink = alsa_output.pci-0000_00_1b.0.analog-stereo "% bt_addr os.system (cmd) def object_signal (значение, путь, интерфейс, элемент): iface = interface [interface.rfind (". ") + 1:  ] val = str (значение) print "{% s.% s} [% s] Path =% s"% (iface, member, path, val), если __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop  (s  et_as_default = True) bus = dbus.SystemBus () bus.add_signal_receiver (property_changed, bus_name = "org.bluez", signal_name = "PropertyChanged", path_keyword = "path", interface_keyword = "interface") mainloop = gobject.MainLoop ()  mainloop.run ()  
0
ответ дан 13 August 2018 в 17:17

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

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