2014-12-04 158 views
3

我正在嘗試使用bluez DBus API掃描藍牙LE設備。我已經安裝bluez-5.25使用如何通過dbus API掃描藍牙LE設備?

--enable-experimental 

配置選項。我可以在支持已經被編譯構建看到。 接口,如心跳,溫度計等出現的DBus但不是

org.bluez.ProximityMonitor1 

接口。據我瞭解,這個接口將需要永久掃描藍牙LE設備的距離信息。但我剛開始處理bluez,所以我不確定。

DBus API中是否有所有必需的東西?爲了永久掃描LE設備需要什麼?

回答

3

您需要註冊org.bluez.Device1代理對象的DBUS創建。然後可以使用org.bluez.Adapter1接口來啓動發現。這將掃描Classic和LE設備。當一個設備被檢測到時,一個Device1對象將被創建並且你的註冊回調將被調用。

+0

我正在這樣做。看來我需要主動掃描以查看設備。被動掃描不發送dbus消息。我試圖跟蹤LE設備。 InterfacesAdded僅在第一次發現時發出。如果我想知道設備是否仍在我附近,那麼實現的方式是什麼?我認爲可以使用接近度,但它不在那裏。不知道bluez是否工作不正常或設備不支持該配置文件。 – 2014-12-12 07:42:44

+0

感應監視器配置文件與掃描不同。您甚至需要先掃描才能使用該配置文件(或任何配置文件)。掃描=發現附近的設備(以獲得其BT地址和服務)。 Proximity Monitor =發現後,如果遠程設備支持,則使用該服務讀取rssi值並根據接近程度選擇性地發出警報。 – kaylum 2014-12-13 20:40:59

+0

我不是很清楚。我掃描設備,然後檢查找到的每個設備。我希望能找到一個提供ProximityMonitor接口的設備。但是我看不到。我用--enable-experimental編譯了bluez,並用-E啓動了守護進程。但是,我不確定只有當它宣佈了接口並且我的信標不支持時才能看到接口。 – 2014-12-17 09:31:05