我已经发起了一个BLE连接,在onServicesDiscovered
我要读出所有的描述符。有五他们和我继续此:GATT onDescriptorRead - 只有一个回调
for (int n=0;n<descriptors.size();n++)
{
gatt.readDescriptor(descriptors.get(n));
}
描述符包含所有描述符... 然后读回调被调用,我要读出描述符值:
@Override
public void onDescriptorRead(BluetoothGatt gatt, final BluetoothGattDescriptor descriptor, int status)
{
deviceInfoArray.add(new ItemSlideMenu(new String(descriptor.getValue()));
}
问题是,读取回调只调用一次,而不是五次。你能告诉我为什么以及如何解决这个问题吗?
有没有办法检查gatt Operation是否正在运行?我想将它们排队在一起,但我不确定哪一个按时运行。 –
API没有办法检查。你必须以线程安全的方式自己完成 – Emil
嗯..我写下了所有的操作,现在手动检查它们。很棒! –