Is the native Android BLE implementation synchronous in nature?
android, android-4.3-jelly-bean, bluetooth-lowenergy, gatt
Solution
Samsung recently published a "migration"-document on the same page I linked in my question. They exactly answer my question while comparing the new native BLE API with the Samsung BLE API:
The synchronous nature of the stack and F/W hasn’t been affected. That is, if we call for example, `writeCharacteristic` for a particular characteristic, if it returns true, the next call to any `BluetoothGatt` or `BluetoothGattServer` method should be done after the `onCharacteristicRead` callback is received. This is because the stack is designed to support and process only one GATT call at a time, and if, for example, you call `writeCharacteristic` or `readCharacteristic` of any `characteristic` soon after the first one, it is ignored.
Problem
I remember reading in the "Guide and Hint"-doc to the Samsung BLE API (archived page): One of the most important concepts of the Samsung F/W and stack is its synchronous nature. That is, if we call for example, `writeCharacteristic` for a particular characteristic, if it returns `true`, the next call to any `BluetoothGatt` or `BluetoothGattServer` method should be done after the `onCharacteristicRead` callback is received. This is because the stack is designed to support and process only one GATT call at a time, and if, for example, you call `writeCharacteristic` or `readCharacteristic` on any characteristic soon after the first one, it is ignored. - Does that also apply to the native implementation of BLE introduced in Android 4.3? - Samsung API also supports only one connected GATT device at a time. Has this changed in the native API?