蓝牙低功耗-不能读取特性.Android祝福



我想从我的远程BLE设备的特定特性读取数据到我的Android平板电脑Nexus 7。

问题是,即使不调用readCharacteristic,我也可以通过启用该特征的通知来接收数据。但我不能成功地读取特性通过调用readCharacteristic没有启用通知。

mBluetoothGatt.readCharacteristic(characteristic)返回false。因此,onCharacteristicRead函数从未被触发。我也检查了属性值BluetoothGattCharacteristic.PROPERTY_READ,它是30。

有人知道这里发生了什么吗?我真的需要单独阅读特性。因为如果我只根据通知分析数据,我无法弄清楚数据是从哪里开始的。这是因为我的设备每次将发送12个字节。它会持续发送字节数组。但是,通知每次会给我带来一个字节的数据。所以我不知道哪个是字节数组的开始字节

我现在使用Android提供的示例代码。

下面是代码片段:
public void readCharacteristic(BluetoothGattCharacteristic characteristic) {
    if (mBluetoothAdapter == null || mBluetoothGatt == null) {
        Log.w(TAG, "BluetoothAdapter not initialized");
        return;
    }
    boolean status = mBluetoothGatt.readCharacteristic(characteristic);
    System.out.println("Initialize reading process status:" + status);
}

public void setCharacteristicNotification(BluetoothGattCharacteristic characteristic,
                                          boolean enabled) {
    if (mBluetoothAdapter == null || mBluetoothGatt == null) {
        Log.w(TAG, "BluetoothAdapter not initialized");
        return;
    }
    mBluetoothGatt.setCharacteristicNotification(characteristic, enabled);
    // This is specific to Heart Rate Measurement.
    if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) {
        BluetoothGattDescriptor descriptor = characteristic.getDescriptor(
                UUID.fromString(SampleGattAttributes.CLIENT_CHARACTERISTIC_CONFIG));
        descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE); 
        mBluetoothGatt.writeDescriptor(descriptor);
    }
}

回调中的代码是:

    @Override
    public void onCharacteristicRead(BluetoothGatt gatt,
                                     BluetoothGattCharacteristic characteristic,
                                     int status) {
        System.out.println("In onCharacteristicRead!!!!!!!");
        if (status == BluetoothGatt.GATT_SUCCESS) {
            broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
            System.out.println("Received Data Success!!!!!!");
        }
    }

我已经通读了阅读特性的文档,但是没有任何帮助。有人能帮我吗?非常感谢!

您需要首先启用特征通知,然后尝试读取它的值,并记住获取返回characteristic. getvalue()方法的字节数组的适当格式。关于

相关内容

  • 没有找到相关文章