2015-02-07 113 views
3

我試圖創建一個充當藍牙低功耗(BLE)外設的Android 5(棒棒糖)應用程序。該應用運行在支持BLE外設模式的Nexus 9上。到目前爲止,我已經設法宣傳一項服務,並允許其他BLE設備成功連接到它。但是,嘗試讀取特徵值時失敗。Android作爲BLE外圍設備

我已檢查過該特性是否具有讀取屬性,並且設置了讀取權限。

當使用LightBlue iOS應用程序(https://itunes.apple.com/gb/app/lightblue-bluetooth-low-energy/id557428110?mt=8)時,我設法發現並連接到我的Nexus並查看特徵uuid,但未顯示該值。

任何幫助將不勝感激。

+0

你有答案嗎?我也試圖連接2個Android設備,一個作爲消費者,另一個作爲數據生產者。 – 2015-10-13 06:12:17

回答

0

首先檢查你的外設模式是廣告特徵數據通常有三種模式

BluetoothGattCharacteristic.PROPERTY_WRITE,  BluetoothGattCharacteristic.PROPERTY_READ, 
BluetoothGattCharacteristic.PROPERTY_NOTIFY; 

,您可以使用

BluetoothGattCharacteristic.PROPERTY_WRITE |BluetoothGattCharacteristic.PROPERTY_READ | BluetoothGattCharacteristic.PROPERTY_NOTIFY; 

爲onCharacteristicWriteRequest一旦完成外觀與所有模式打造特色( )在建立特性時給出的BluetoothGattServerCallback()中。當中央想要發送數據時,它可以使用WRITE模式將數據寫入特徵中,並且您將在外設端觸發onCharacteristicWriteRequest()回調方法,並且您將在byte []中獲得數據,並確保使用btGattServer.sendResponse(device, requestId,BluetoothGatt.GATT_SUCCESS,0,null); 通過檢查回調方法中的responseNeeded布爾值。這樣數據就從中央傳輸到外圍。

,並從外圍數據發送到中央使用通知charatertertistc

BluetoothGattCharacteristic bgc = bluetoothGattService 
        .getCharacteristic(chartersticUUID); 
       bgc.setValue(bnd.data); 
    btGattServer.notifyCharacteristicChanged(centralbluetoothdevice, bgc, false);