Android阅读特征问题

时间:2014-03-17 15:13:42

标签: android bluetooth-lowenergy gatt characteristics

我正在使用官方Android开发者网站的代码,并发现阅读charactaristics的困难

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

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

BluetoothLeService calss中的readCharacteristic函数是:

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);
        }

我在回调中设置了一个断点,我从未停止过... 它可能是许可还是财产?别的什么?...... 有人有一个有效的例子吗?

2 个答案:

答案 0 :(得分:1)

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

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

如果您需要进一步澄清,请告诉我。

答案 1 :(得分:0)

BluetoothGattCharacteristic(UUID uuid, int properties, int permissions)

参考:BluetoothGattCharacteristic documentation

所以:

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