Abonnieren Sie ein Merkmal und fangen Sie den Wert Android
Im Entwicklung eines BLE-app, auf der Grundlage der Gatt-sample-Projekt von google zur Verfügung gestellt: https://developer.android.com/samples/BluetoothLeGatt/index.html. Also, ich kann Daten senden schreiben in einer charakteristischen erfolgreich. Jetzt muss ich wissen, wenn dieses Merkmal seinen Wert ändern.
DeviceActivity
private void displayGattServices(List<BluetoothGattService> gattServices)
{
//get services & characteristics
................
final BluetoothGattCharacteristic characteristic = mGattCharacteristics.get(2).get(0);
final int charaProp = characteristic.getProperties();
mWriteCharacteristic = characteristic;
mBluetoothLeService.setCharacteristicNotification(mWriteCharacteristic, true);
//write in the characteristic to send a reset command to BLE device
//Start the read method, that permit subscribe to the characteristic
BluetoothLeService.read(mWriteCharacteristic);
BluetoothLeService.set(mWriteCharacteristic,true);
};
BluetoothLeService
public static void read(BluetoothGattCharacteristic characteristic)
{
if (mBluetoothAdapter == null || mBluetoothGatt == null)
{
Log.w("BluetoothAdapter not initialized");
return;
};
mBluetoothGatt.readCharacteristic(characteristic);
};
public static void set(BluetoothGattCharacteristic characteristic, boolean enabled)
{
if(mBluetoothAdapter == null || mBluetoothGatt == null)
{
Log.w("BluetoothAdapter not initialized");
return;
};
mBluetoothGatt.setCharacteristicNotification(characteristic, enabled);
UUID uuid = UUID.fromString("00002902-0000-1000-8000-00805f9b34fb");
BluetoothGattDescriptor descriptor = characteristic.getDescriptor(uuid);
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
mBluetoothGatt.writeDescriptor(descriptor);
};
Aber ich weiß nicht, wie kann ich fangen Sie den Wert des schreib-Merkmal. Tatsächlich, ich weiß nicht, ob mein code abonnieren Sie erfolgreich auf das Merkmal oder nicht. Manche kann man mir helfen? Wie kann ich überprüfen, ob der Wert der Eigenschaft ändern, wirklich? Und wie kann ich die Anzeige den neuen Wert für dieses Merkmal auf dem Bildschirm? Korrekt mein code oder muss ich hinzufügen, ändern oder entfernen Sie etwas?
Thaks im Voraus.
Ich leite diese Frage: Lesen mehrere Merkmale aus einer BLE-Gerät synchron (Empfohlene Methode für Android)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Ausführung innerhalb einer Schleife diese Funktion - displayGattServices(Liste gattServices) und erhalten Sie die gesamten Leistungen und Eigenschaften verbunden BLE Gerät.
Zur Bestimmung Eigenschaften name und Eigenschaften basierend auf der UUID-Wert, können Sie sich an BLE Merkmale
Sobald Sie festgestellt haben, welche Merkmale gilt Sie für Ihre BLE-Gerät, fügen Sie es in eine Warteschlange und Lesen/setzen.
@ Ihre DeviceActivity Klasse
Fügen Sie die unter-Funktion auch in Ihrem DeviceActivity Klasse,
Nachdem er Sie in Ihrem Service-Methode, die Sie brauchen, um einen broadcast receiver in Ihrem DeviceActivity activity-Klasse zu behandeln, die verschiedenen Ereignisse, die ausgelöst durch Ihre BluetoothLeService service Klasse.
Wenn Sie weitere benötigen, ein Beispiel-code führt Sie durch, Sie können sich auf BLE Beispielcode