簡體   English   中英

Android BLE GATT外圍模式通知

[英]Android BLE GATT Peripheral Mode Notifications

我正在嘗試使用Android 5.0(21)API將應用設置為BLE外圍設備。 到目前為止,我已經設置了服務器,使廣告和連接正常工作,設置了自定義GATT服務和特性,並且可以在外圍設備與其他測試設備之間進行讀寫。 現在,我嘗試將通知添加到一些參數中,但簡而言之; 他們沒有工作。

定義這些特征時,它們包括notify屬性:

BluetoothGattService battService = new BluetoothGattService(BatteryProfile.UUID_BATTERY_SERVICE, BluetoothGattService.SERVICE_TYPE_PRIMARY);

BluetoothGattCharacteristic batteryLevelCharacteristic =
        new BluetoothGattCharacteristic(BatteryProfile.UUID_BATTERY_LEVEL,
                BluetoothGattCharacteristic.PROPERTY_READ | BluetoothGattCharacteristic.PROPERTY_NOTIFY,
                BluetoothGattCharacteristic.PERMISSION_READ);
battService.addCharacteristic(batteryLevelCharacteristic);

mGattServer.addService(battService);

在我的BluetoothGattServerCallback ,我包含了以下方法:

@Override
public void onDescriptorWriteRequest(BluetoothDevice device, int requestId, BluetoothGattDescriptor descriptor, boolean preparedWrite, boolean responseNeeded, int offset, byte[] value) {
    Log.d(TAG, "Descriptor write: " + descriptor.toString());
    if (responseNeeded) {
        mGattServer.sendResponse(device, requestId, BluetoothGatt.GATT_SUCCESS, 0, value);
    }
    super.onDescriptorWriteRequest(device, requestId, descriptor, preparedWrite, responseNeeded, offset, value);
}

我希望每當客戶端啟用通知(或為此寫入任何描述符)時,都將記錄“ Descriptor write:”消息; 但不會記錄此類消息(調試器也不會進入該函數)。

我稍后嘗試使用以下方式發送通知:

BluetoothGattCharacteristic batteryLevelCharacteristic = service.getCharacteristic(BatteryProfile.UUID_BATTERY_LEVEL);
batteryLevelCharacteristic.setValue(new byte[]{ mBatteryLevel });
mGattServer.notifyCharacteristicChanged(mConnectedDevice, batteryLevelCharacteristic, false);

哪一個,盡管它會更新值; 它不會向連接的客戶端發送通知。

我已經在Nexus 5X上使用Android 6.0.1進行了測試(不幸的是,我可以使用它進行測試的唯一Android設備)。 那里並沒有很多使用外設/ BluetoothGattServer API的示例,所以我有些迷茫。 是否有我忘記調用的方法,或者我需要以某種未記錄的順序進行操作才能使通知正常工作?

任何幫助將不勝感激!

我不知道您是否已經找到解決方案。 但是我認為您可以嘗試通過為需要通知的特征定義客戶端配置特征描述符。

可以按照這篇文章中的說明完成。 在Android-L預覽中實現BLE通知的任何方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM