Bluetooth Low Energy Charakteristik auslesen

  • Antworten:0
Niklas G.
  • Forum-Beiträge: 1

06.12.2017, 17:41:18 via Website

Hallo zusammen,

ich habe eine Applikation die mittels Bluetooth Low Energy mit einer Leuchte kommunizieren soll. Sobald ich nach einem Scan die Leuchte ausgewählt habe öffnet sich eine neue Activity mit einem Fragment, in welchem man die Helligkeit sowie die Farbtemperatur einstellen kann. Sobald die neue Activity ausgeführt wird möchte ich die momentanen Werte aus der Charakteristik auslesen und meine Seekbar dementsprechend anpassen. Nur leider sagt mir mein Android Studio, dass ich auf einen Null Objekt zeige. Wenn ich die Funktion zu einem späteren Zeitpunkt quasi auf Knopfdruck ausführe funktioniert die Funktion.

public byte[] readWhiteAndIntensityCharacteristic() {

    if (mBluetoothAdapter == null || mBluetoothGatt == null) {

        Log.w(TAG, "BluetoothAdapter not initialized");

        return null;

    }

    /*check if the service is available on the device*/

    BluetoothGattService mCustomService = mBluetoothGatt.getService(UUID.fromString(UuidAdresssService));

    if (mCustomService == null) {

        Log.w(TAG, "Custom BLE Service not found");

        return null;

    }

    /*get the read characteristic from the service*/

    BluetoothGattCharacteristic mReadCharacteristic = mCustomService.getCharacteristic(UUID.fromString(UuidAdresssWhiteAndIntensityCharastic));

    byte[] messageByte = mReadCharacteristic.getValue();

    if (messageByte != null && messageByte.length > 0) {

        final StringBuilder stringBuilder = new StringBuilder(messageByte.length);

        for (byte byteChar : messageByte)

            stringBuilder.append(String.format("%02X", byteChar));

        s = "0x" + stringBuilder.toString();

        Log.v("Scan Activity", s);

        if (mBluetoothGatt.readCharacteristic(mReadCharacteristic) == false) {

            Log.w(TAG, "Failed to read characteristic");

        }

    }

    return messageByte;

}

Sobald ich mich mit der Leuchte verbinde werden doch die Services sowie die Charakteristiken ausgelesen wieso kann ich in diesem Zuge nicht direkt die Werte aus der Charakteristik auslesen?

Wo muss ich ansetzen um Werte zu beginn auszulesen bzw. wann kann ich dies tun?

Antworten