如何使用org.bluez.AudioSource GetProperty

如何使用org.bluez.AudioSource GetProperty,c,bluetooth,dbus,a2dp,C,Bluetooth,Dbus,A2dp,如何检查给定设备是否已连接。使用org.bluez.AudioSource GetProperty 我正在使用c和DBus,有谁能帮我摆脱这一困境吗…我想您已经研究了BlueZ D-BUS API,这是一个宝贵的文档,可以用于监听BlueZ的信号和查询信息。您可以在doc/文件夹中的任何BlueZ源代码中找到它 要检查设备是否已连接,首先需要使用D-BUS获取计算机上的所有蓝牙设备及其路径,我不会提供任何C文档,因为您可以使用Google轻松找到大量关于此的示例。我将向您展示通过dbus sen

如何检查给定设备是否已连接。使用org.bluez.AudioSource GetProperty
我正在使用c和DBus,有谁能帮我摆脱这一困境吗…

我想您已经研究了
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  
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 --system \  
  --print-reply \  
  --dest=org.bluez \  
  /org/bluez/{pid}/hci0 \  
  org.bluez.Adapter.GetProperties  
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有点混乱,使用起来不方便。

我假设您已经研究了
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  
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 --system \  
  --print-reply \  
  --dest=org.bluez \  
  /org/bluez/{pid}/hci0 \  
  org.bluez.Adapter.GetProperties  
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有点混乱,使用起来不方便。

这一观察结果可能有用。在
BlueZ版本4.98
上,org.BlueZ.AudioSource.GetProperties抛出
错误:
error org.freedesktop.DBus.error.unknown方法:在
BlueZ版本4.101上不存在带有签名“On interface”org.BlueZ.AudioSource”的方法“GetProperties”,它可以工作:
method return sender=:1.2->dest=:1.51 reply\u serial=2数组[dict entry(字符串“State”变量字符串“disconnected”)]谢谢注意到它。似乎是BlueZ()中的一个bug。此观察结果可能有用。在
BlueZ版本4.98
上,org.BlueZ.AudioSource.GetProperties抛出
错误:
error org.freedesktop.DBus.error.unknown方法:在
BlueZ版本4.101上不存在带有签名“On interface”org.BlueZ.AudioSource”的方法“GetProperties”,它可以工作:
method return sender=:1.2->dest=:1.51 reply\u serial=2数组[dict entry(字符串“State”变量字符串“disconnected”)]谢谢注意到它。似乎是BlueZ()中的一个bug。