python如何控制蓝牙_python – 如何在蓝牙设备连接时运行脚本?

当我的蓝牙耳机连接到我的电脑时,我想启动我的音乐播放器(Clementine).如何检测连接的蓝牙设备,以便我可以运行脚本来启动播放器?

解决方法:

我不喜欢轮询方法,所以我对bluez和DBus进行了一些挖掘.我最后编写了以下脚本:

#!/usr/bin/python

import dbus

from dbus.mainloop.glib import DBusGMainLoop

import gobject

import subprocess

# ID of the device we care about

DEV_ID = '00_1D_54_AB_DC_72'

dbus_loop = DBusGMainLoop()

bus = dbus.SystemBus(mainloop=dbus_loop)

# Figure out the path to the headset

man = bus.get_object('org.bluez', '/')

iface = dbus.Interface(man, 'org.bluez.Manager')

adapterPath = iface.DefaultAdapter()

headset = bus.get_object('org.bluez', adapterPath + '/dev_' + DEV_ID)

# ^^^ I'm not sure if that's kosher. But it works.

def cb(iface=None, mbr=None, path=None):

if ("org.bluez.Headset" == iface and path.find(DEV_ID) > -1):

print 'iface: %s' % iface

print 'mbr: %s' % mbr

print 'path: %s' % path

print "\n"

print "matched"

if mbr == "Connected":

subprocess.call(["clementine", "--play"])

print 'conn'

elif mbr == "Disconnected":

subprocess.call(["clementine", "--stop"])

print 'dconn'

headset.connect_to_signal("Connected", cb, interface_keyword='iface', member_keyword='mbr', path_keyword='path')

headset.connect_to_signal("Disconnected", cb, interface_keyword='iface', member_keyword='mbr', path_keyword='path')

loop = gobject.MainLoop()

loop.run()

标签:python,bluetooth,automation,dbus,scripts

来源: https://codeday.me/bug/20190808/1616910.html

你可能感兴趣的:(python如何控制蓝牙)