Android BLE:服务中发现的特征列表不完整

时间:2016-04-28 14:46:32

标签: android bluetooth-lowenergy gatt

尝试从GATT服务中读取特征,与我从iOS设备或制造商指南中获得的列表相比,该列表不完整。

我正在阅读以下特征:

thr()

private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
        @Override
        public void onConnectionStateChange(BluetoothGatt gatt, int status,
                                            int newState) {
            if (newState == BluetoothProfile.STATE_CONNECTED) {
                mConnectionState = STATE_CONNECTED;
                mBluetoothGatt = gatt;
                if (shouldStartWriting && writeCharacteristicsQueue.peek() != null) {
                    mBluetoothGatt.writeCharacteristic(writeCharacteristicsQueue.poll());
                } else {
                    EventBus.getDefault().post(new BTGattStatusEvent(BTGattStatusEvent.Status.CONNECTED));
                    Log.i(TAG, "Attempting to start service discovery:" +
                            gatt.discoverServices());
                }

            } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
                mConnectionState = STATE_DISCONNECTED;
                mBluetoothGatt = null;
                EventBus.getDefault().post(new BTGattDisconnectedEvent());
            }
        }

        @Override
        // New services discovered
        public void onServicesDiscovered(BluetoothGatt gatt, int status) {
            EventBus.getDefault().post(new BTGattStatusEvent(BTGattStatusEvent.Status.DISCOVERED));

            if (status == BluetoothGatt.GATT_SUCCESS) {
                for (BluetoothGattService service : gatt.getServices()) {
                    LOGD(TAG, "Found Service " + service.getUuid().toString());
                    discoverCharacteristics(service);
                }
                gatt.readCharacteristic(readCharacteristicsQueue.poll());
            } else {
                Log.w(TAG, "onServicesDiscovered received: " + status);
            }
        }

    @Override
    // Result of a characteristic read operation
    public void onCharacteristicRead(BluetoothGatt gatt,
                                     BluetoothGattCharacteristic characteristic,
                                     int status) {
        if (status == BluetoothGatt.GATT_SUCCESS) {
            parseCharacteristic(characteristic);
            LOGD(TAG, String.format("%s | %s ", characteristic.getUuid(), characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT16, 0)));//(BluetoothGattCharacteristic.FORMAT_UINT16));

            if (readCharacteristicsQueue.peek() != null) {
                gatt.readCharacteristic(readCharacteristicsQueue.poll());
            } else {
                EventBus.getDefault().post(new BTGattStatusEvent(BTGattStatusEvent.Status.DONE_DISCOVERING));
            }
        }
    }

我还尝试使用private void discoverCharacteristics(BluetoothGattService service) { for (BluetoothGattCharacteristic gattCharacteristic : service.getCharacteristics()) { LOGD(TAG, "Discovered UUID: " + gattCharacteristic.getUuid()); readCharacteristicsQueue.add(gattCharacteristic); } } 获得此特性,但我收到了空值。

找到的特征是:

getCharacteristic

但是,在iOS上,根据制造商的说法,还应该有一个0000fff7。

为什么不读这个特征?

更新: 这里什么都没发生。没有Android的BLE扫描应用可以发现它。

0 个答案:

没有答案