Nicht Lesen kann, charakteristisch. Android BLE

Möchte ich zum Lesen der Daten von einem bestimmten Merkmal meiner remote-BLE-Gerät auf mein Android-tablet Nexus 7.

Das problem ist, dass ich die Daten empfangen kann, durch die Aktivierung der Benachrichtigung über die Eigenschaft, auch ohne Aufruf readCharacteristic. Aber ich kann nicht richtig Lesen charakteristisch durch den Aufruf readCharacteristicohne aktivieren der Benachrichtigung.

mBluetoothGatt.readCharacteristic(characteristic) gibt false zurück. Somit ist die Funktion onCharacteristicRead hat noch nie ausgelöst worden. Ich habe auch überprüft der Wert der Eigenschaft BluetoothGattCharacteristic.PROPERTY_READ, es ist die 30.

Hat jemand ein paar Ideen, was ist hier Los? Ich wirklich brauchen, um zu Lesen das Merkmal getrennt. Weil wenn ich nur die Analyse der Daten basiert auf der Meldung, ich kann nicht herausfinden, wo die Daten beginnt. Dies liegt daran, dass mein Gerät schicken 12bytes jeder Zeit. Und es wird kontinuierlich senden des byte-array. Doch die Meldung bringen würde, mir die Daten ein byte zu einer Zeit. Also ich weiß nicht, das ist der Anfang byte des byte-array.

Ich bin mit dem Beispiel-code von Android jetzt.

Hier ist das snippet:

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

Den code im callback ist:

    @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!!!!!!");
        }
    }

Habe ich gelesen, durch das Dokument zu Lesen charakteristisch, aber nichts hilft. Kann mir jemand helfen? Ich danke Ihnen sehr!

InformationsquelleAutor Magic | 2014-03-26
Schreibe einen Kommentar