2015-04-17 96 views
0

我在Bluetooth Low Energy on Android上遇到了一些困難。我已經密切地完成了我鏈接的指南,以及檢查完整示例code。我有一個BLE設備需要連接並從中檢索數據幀。在一個點上的文件指示要從藍牙低功耗設備讀取流數據

查詢/啓用服務:服務UUID UUID1,特徵UUID UUID2

一旦這已被正確執行時,該裝置應開始串流的在一個格式化的20個字節的幀具體做法。

尋找設備,連接到它並發現它的服務我沒有問題。但後來我卡住了。要獲得服務,調用BluetoothGatt的方法getServices()。這將返回一個BluetoothGattService的列表,其中也包含BluetoothGattCharacteristic的列表。很明顯,BluetoothGattService的UUID必須等於UUID1和BluetoothGattCharacteristic的UUID到UUID2。但我不知道如何「啓用」具有某些特徵的此服務。

我的文檔也沒有提到描述符。我已經檢查過,UUID2特徵中只有一個描述符。所以,現在我擁有了可能需要的一切 - 服務UUID,特徵UUID和描述符......但是,如何讀取數據?

回答

1

您可以遍歷所有找到的特徵,並獲取帶有UUID1和UUID2的BluetoothGattCharacteristic對象。使用「UUID.fromString()」將表示UUID的字符串轉換爲UUID對象,該對象可以與「.equals」一起使用以與「characteristic.getUuid()」進行比較。

如果我正確理解了你,你想讀取一些特徵的數據。當你在你的BluetoothDevice上調用「connectGatt」時,你會得到一個類型爲「BluetoothGatt」的對象。在發現服務和特性後,使用這個gatt對象在其上調用「readCharacteristic()」,將期望的BluetoothCharacteristic作爲參數傳遞。

我希望我能幫助,讓我知道,如果我要澄清我的答案

Linard

+0

調用'readCharacteristic(特性)','的onCharacteristicRead()'-callback不幸不叫。 – jdepypere

+0

@jdepypere你可以測試當你在主線程上調用readCharacteristic(...)時是否還沒有調用回調嗎?在後臺線程上調用BLE方法有很多問題... http://stackoverflow.com/a/20507449/1990080 –

+0

我使用了[this method](http://stackoverflow.com/a/11125271/) 1319187)運行'mBluetoothGatt.readCharacteristic(特徵)',但回調仍然沒有調用... – jdepypere

相關問題