蓝牙守护程序
在默认安装中,守护程序(bluetoothd)在后台运行(从file运行/etc/init.d/bluetooth
)。该守护程序会注意识别并连接到已知的蓝牙设备,并且可能与中的配置文件一起配置/etc/bluetooth
。要使耳机自动联网,请audio.conf
取消注释以下行(删除#
):
AutoConnect=true
要重新启动守护程序,请输入sudo /etc/init.d/bluetooth restart
。
备注:sudo hcitool cc <MAC-Adress>
在运行守护程序时,使用命令行工具无法在此处稳定地连接测试环境中的已知设备。
DBus
为了连接断开但物理上存在且配对的耳机,我们可以使用脚本中的D-Bus。这是python中的示例:
#!/usr/bin/python
# Toggles headset connection
import dbus
from dbus.mainloop.glib import DBusGMainLoop
dbus_loop = DBusGMainLoop()
bus = dbus.SystemBus(mainloop=dbus_loop)
#Get dbus interface for headset
manager = bus.get_object('org.bluez', '/')
iface_m = dbus.Interface(manager, 'org.bluez.Manager')
adapterPath = iface_m.DefaultAdapter()
adapter = bus.get_object('org.bluez', adapterPath)
iface_a = dbus.Interface(adapter, 'org.bluez.Adapter')
devicePath = iface_a.ListDevices()[0] # assuming first device
device = bus.get_object('org.bluez', devicePath)
iface_h = dbus.Interface(device, 'org.bluez.Headset')
#Check state of connection
connected = iface_h.IsConnected()
print 'Toggling connection. Please wait'
# toggle connection
if not connected:
try:
iface_h.Connect()
print 'Connecting: ', devicePath
except:
print 'Device not found'
else:
iface_h.Disconnect()
print 'Disconnecting: ', devicePath
当然,如果我们有多个蓝牙设备,我们将不得不devicePath
适当地进行调整。上面的示例将连接一个Headset
。对于任何其他服务(例如AudioSink
),将接口更改为其他协议。
脉冲音频
如果您知道蓝牙设备的MAC地址,则可以通过以下方式将其连接为Pulseaudio的输出接收器:
pacmd set-default-sink bluez_sink.xx_xx_xx_xx_xx_xx
其中xx_xx_xx_xx_xx_xx是MAC地址(用'_'替换':',以使pulseaudio识别它)。
另请参阅此答案以获取更多详细信息。