Warum setCharacteristicNotification() nicht eigentlich "Benachrichtigungen" aktiviert?

Den BluetoothLeGatt Android BLE-Beispiel enthält den folgenden code:

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

Meine Frage ist hauptsächlich, warum wird der code markiert spezifisch die Herzfrequenz-Messung? Wie es scheint, haben Sie eine Client-Eigenschaft Config Descriptor (CCCD) charakteristisch ist die standard-Weg, um die Kontrolle Merkmal Benachrichtigung, also warum nicht setCharacteristicNotification() kümmern zu schreiben? Und da es das nicht tut, was tut setCharacteristicNotification() eigentlich tun?

Ich bin ziemlich neu auf BLE und es gibt keine Erklärungen, es auf dem internet, die nicht davon ausgehen, dass Sie schon alles verstehen! Also nicht davon ausgehen, ich weiß, was ein CCCD oder was auch immer ist! Es war schon schwierig genug, herauszufinden, was CCCD selbst steht für!

Edit: Siehe auch diese Antwort, die unterstützt mein Verständnis von CCCDs (und macht mich weiter zu Fragen, warum Sie haben zu schreiben, um Sie manuell in Android, wenn es eine Funktion gibt, die sieht wie sollte es für Sie tun): https://devzone.nordicsemi.com/index.php/what-does-cccd-mean

InformationsquelleAutor Timmmm | 2014-04-02
Schreibe einen Kommentar