2016-07-28 145 views
0

問題

我試圖將多個藍牙LE設備(心率監視器)連接到我的Android設備。我可以掃描並連接到它們。他們流傳輸很好,只是當我輸出通知時,它會在一個傳感器的數據之間跳轉到另一個。試圖通過藍牙LE連接多個設備到Android設備

我基本上是用this GitHub的源代碼對於大多數這個項目的。在項目中,他們使用ONE服務(稱爲BluetoothLeService)。在項目中,我創建了兩個服務,彼此相當多的重複,除了一個處理一個用戶通話,另一個用於處理其他用戶。

我得到這個輸出到控制檯:

07-27 21:14:01.786 9062-9062/com.example.android.aware d/BluetoothGatt:setCharacteristicNotification() - UUID:00002a37 -0000-1000-8000-00805f9b34fb enable:true

07-27 21:14:01.786 9062-9062/com.example.android.aware D/BluetoothLeService2:嘗試使用現有的mBluetoothGatt進行連接。此錯誤來自BLS2

07-27 21:14:01.796 9062-10009/com.example.android.aware D/BluetoothGatt:onClientConnectionState() - status = 133 clientIf = 7 device = E3:64:43: 37:D2:AA

07-27 21:14:01.796 9062-10009/com.example.android.aware I/BluetoothLeService2:斷開與GATT服務器的連接。

07-27 21:14:01.796 9062-9062/com.example.android.aware d/BluetoothGatt:setCharacteristicNotification() - UUID:00002a37-0000-1000-8000-00805f9b34fb啓用:真

07 -27 21:14:01.816 9062-9062/com.example.android.aware d/BluetoothLeService:試圖使用現有mBluetoothGatt進行連接。此錯誤來自BLS1

07-27 21:14:01.826 9062-10009/com.example.android.aware D/BluetoothGatt:onClientConnectionState() - status = 133 clientIf = 6 device = 00:22:D0: 41:CA:B6

07-27 21:14:01.826 9062-10009/com.example.android.aware I/BluetoothLeService:與GATT服務器斷開連接。


嘗試

  • 我試圖添加一個新的CLIENT_CHARACTERISTIC_CONFIG(稱之爲CLIENT_CHARACTERISTIC_CONFIG2)在SampleGattAttributes類的字符串,該進來下面的代碼片段播放(從服務分類):

    BluetoothGattDescriptor descriptor = characteristic 
           .getDescriptor(UUID 
             .fromString(SampleGattAttributes.CLIENT_CHARACTERISTIC_CONFIG)); 
    


我想問題,如控制檯說,有事情做,在這兩種服務稱爲mBluetoothGatt(這是一個BluetoothGatt類型的對象)的變量。我的想法是這樣的:

如果我有同步運行兩個服務,那麼如果我創造各兩個不同BluetoothGatt對象,爲什麼我被告知正在使用相同BluetoothGatt對象?

+0

即使您認爲您應該可以在實踐中獨立處理這兩種設備,但我發現讓事情可靠的唯一方法是同步多個外圍設備的代碼,以便我只有一個請求外設一次。它使啓動緩慢。 – Ifor

回答

0

我通過輸出基於設備地址的數據解決了這個問題。

因此,我不是隻是吐出通知,而是放置一個條件(是DisplayData()方法),它說:「嘿,如果這是我們在這裏尋找的輸出的設備,那麼只輸出。

當然,這些設備不是時間同步的,但是當您使用時間記錄時,這會有所幫助。

0

我沒有看到您引用的源代碼,但您是否爲每個連接存儲了不同的BluetoothGattCallback或返回值?我的意思是你如何評判這兩種設備? connectGatt將返回一個BluetoothGattCallback實例來通知狀態,或者您可以使用此實例執行進一步的操作,例如,知道連接狀態等。