2012-10-12 19 views

回答

1

我假設你一直在尋找進入BlueZ D-BUS API這是一切珍貴的文檔與收聽BlueZ的信號和查詢信息有關。您可以在doc/文件夾中的任何BlueZ源中找到它。

要檢查設備連接時,您首先需要將您的所有電腦上的藍牙設備,並使用d-BUS他們路徑,我將不提供任何C文檔,你可以很容易地找到大量的有關實例這使用谷歌。我會告訴你什麼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總線調用使用dbus-send因爲d-BUS C API是一個有點混亂和不便使用。

+0

此觀察可能有用。 在'版的BlueZ 4.98',org.bluez.AudioSource.GetProperties拋出'錯誤:' 錯誤org.freedesktop.DBus.Error.UnknownMethod: 「對接口「方法 」的GetProperties,「 有特色」 org.bluez.AudioSource 「不存在 在'版本的BlueZ 4.101',它'工作原理:' 方法返回發件人=:1.2 - > DEST =:1.51 reply_serial = 2 陣列[ 字典條目( 字符串 」國家「 變體字符串「斷開」 ) ] – AjayKumarBasuthkar

+0

感謝注意它。看起來像BlueZ中的一個錯誤(https://bugs.archlinux.org/task/36080)。 –

相關問題