1

我正在使用来自官方 android 开发者网站的代码,但在阅读特性方面遇到了困难

在迭代所有 uuid 时,我使用此代码在 displayGattServices 函数的 DeviceControlActivity 类中创建 gatt 特征读取调用:

mBluetoothLeService.readCharacteristic(new BluetoothGattCharacteristic(
                    UUID.fromString(uuid),
                    BluetoothGattCharacteristic.PERMISSION_READ,
                    BluetoothGattCharacteristic.PROPERTY_READ));

readCharacteristic 函数 int BluetoothLeService calss 是:

public void readCharacteristic(BluetoothGattCharacteristic characteristic) {
    if (mBluetoothAdapter == null || mBluetoothGatt == null) {
        Log.w(TAG, "BluetoothAdapter not initialized");
        return;
    }
    mBluetoothGatt.readCharacteristic(characteristic);
}

BluetoothLeService 类中的回调也是:

@Override
    public void onCharacteristicRead(BluetoothGatt gatt,
                                     BluetoothGattCharacteristic characteristic,
                                     int status) {

        if (status == BluetoothGatt.GATT_SUCCESS) {
            broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
        }

我在回调处设置了一个断点,但我永远不会停在那里......可能是许可还是财产?别的东西?...有人有一个可行的例子吗?

4

2 回答 2

2

这通常不是您阅读特征的方式。您应该遵循的步骤是: - 查找设备 - 连接到设备 - 发现服务 - 从服务中选择您想要的特征 - 使用该特征来读取值

您必须首先获得对服务中特征的引用才能读取它,而不是仅仅使用构造函数创建新特征。

让我知道您是否需要进一步澄清这一点。

于 2014-03-17T18:20:03.210 回答
0
BluetoothGattCharacteristic(UUID uuid, int properties, int permissions)

参考:BluetoothGattCharacteristic文档

所以:

mBluetoothLeService.readCharacteristic(new BluetoothGattCharacteristic(
                UUID.fromString(uuid),
                BluetoothGattCharacteristic.PROPERTY_READ,
                BluetoothGattCharacteristic.PERMISSION_READ
                ));
于 2017-10-12T04:46:59.373 回答