1

how can i check weather the given device is connected. using org.bluez.AudioSource GetProperty I am using c and DBus,can anybody help me to get out of this...

4

1 回答 1

1

我假设您一直在研究BlueZ D-BUS API有关收听 BlueZ 信号和查询信息的所有内容的宝贵文档。doc/您可以在文件夹中的任何 BlueZ 源中找到它。

要检查设备是否已连接,您首先需要使用 D-BUS 获取计算机上的所有蓝牙设备及其路径,我不会提供任何 C 文档,因为您可以使用 Google 轻松找到大量关于此的示例。我将向您展示您可以通过哪些 D-BUS 调用dbus-send来获取此类信息。

获取设备列表:

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  

我发现首先尝试使用 d-bus 调用更方便,dbus-send因为 D-BUS C API 有点混乱且使用不方便。

于 2012-11-24T17:25:25.433 回答