当前位置: 首页>>技术教程>>正文


configuration – 自动连接蓝牙设备

, , ,

问题描述

有没有一种方法可以将Ubuntu中的蓝牙设置为在打开时自动连接到与其配对的设备。此外,有没有一种方法可以在连接时自动将声音输出更改为蓝牙耳机?

最佳思路

脉冲音频> = 1.0

通过编辑/etc/pulse/default.pa,我们可以将pulseaudio模块module-switch-on-connect加载到音频接收器,以便在将其呈现给pulseaudio声音服务器后自动连接。我们需要插入以下行

load-module module-switch-on-connect

以前版本的pulseaudio

蓝牙设备一经出现,便会在PulseAudio中被识别。但是,需要在音频设置中手动进行连接。有一个GUI,允许一键式连接到BT设备(stream2ip)。

编辑:从版本0.2.5 stream2ip允许auto-connecting到蓝牙设备。

编辑:您可以将bluez设备设置为默认设备(例如通过使用pacl或在配置设置中),如果不存在蓝牙设备,则可以回退到内部音频。

编辑:这是一个快速且肮脏的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(例如00:0C:78:4F:B6:B5)替换MAC,并在脚本查找设备时以秒为单位设置所需的超时(例如10)。然后,此脚本将在每个超时时间监听蓝牙设备的给定MAC,并将其连接到PulseAudio(如果存在)。该脚本将永远运行,直到被杀死或关闭虚拟终端为止。

有时,PulseAudio在关闭电源后似乎不知道该设备再次出现。希望pulseaudio -k重新出现。

不花哨,没有GUI,但至少在我的设置中还可以。

针对那些感兴趣的人进行编辑:发布了具有用于方便设置的GUI的bt-autoconnect。请在此处提交错误或建议。感谢您的测试。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11388.html,未经允许,请勿转载。