如何使用org.bluez.AudioSource GetProperty

时间:2012-10-12 07:48:27

标签: c bluetooth dbus a2dp

如何检查给定设备的连接天气。使用org.bluez.AudioSource GetProperty 我正在使用c和DBus,任何人都可以帮我摆脱这个......

1 个答案:

答案 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有点混乱且使用起来不方便。