如何检查给定设备的连接天气。使用org.bluez.AudioSource GetProperty 我正在使用c和DBus,任何人都可以帮我摆脱这个......
答案 0 :(得分:1)
我假设您一直在研究 BlueZ D-BUS API
,这是与收听BlueZ信号和查询信息相关的所有内容的宝贵文档。您可以在doc/
文件夹中的任何BlueZ源中找到它。
要检查设备是否已连接,首先需要使用D-BUS获取计算机上的所有蓝牙设备及其路径,我不会提供任何C文档,因为您可以轻松找到有很多关于使用Google的例子。我将通过dbus-send
向您展示您可以通过D-BUS呼叫获取此类信息。
获取设备列表
dbus-send --system \
--dest=org.bluez \
--print-reply / \
org.bluez.Manager.GetProperties
这会返回一个带有路径的适配器数组 获得这些路径后,您可以检索与适配器配对的所有蓝牙设备的列表。
获取配对设备:
dbus-send --system \
--print-reply \
--dest=org.bluez \
/org/bluez/{pid}/hci0 \
org.bluez.Adapter.GetProperties
这为您提供了Devices
数组字段中配对设备的列表。
获得与蓝牙适配器配对的设备列表后,您就可以知道它是否已连接到AudioSource界面。
获取连接到AudioSource界面的设备:
dbus-send --system \
--print-reply \
--dest=org.bluez \
/org/bluez/{pid}/hci0/dev_XX_XX_XX_XX_XX_XX \
org.bluez.AudioSource.GetProperties
我发现使用dbus-send
首次尝试d-bus调用更方便,因为D-BUS C API有点混乱且使用起来不方便。