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 nativ 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?
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.
- No. most of the function calls are asynchronous.
- I don't know. Official docs doesn't mention it but it doesn't say that it supports only one device either. I believe it's possible to do it. Check this article: http://blog.lemberg.co.uk/getting-bottom-android-bluetooth-low-energy-api#.UfvK6ZK-1cY
It says (I don't know what its source is) that multiple peripheral devices can connect to one Android Central device