Google が提供する Gatt サンプル プロジェクトに基づいて、BLE アプリを開発しています: https://developer.android.com/samples/BluetoothLeGatt/index.html。というわけで、特性に書き込んでいるデータを正常に送信できます。ここで、この特性がいつ値を変更するかを知る必要があります。
デバイス アクティビティ
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);
};
しかし、読み取り特性の値を取得する方法がわかりません。実際、私のコードが特性にうまくサブスクライブするかどうかはわかりません。誰かが私を助けることができますか?特性の値が本当に変化するかどうかを確認するにはどうすればよいですか? また、この特性の新しい値を画面に表示するにはどうすればよいですか? 私のコードは正しいですか、何かを追加、変更、または削除する必要がありますか? あらかじめご了承ください。この質問でガイドします:BLEデバイスから複数の特性を同期的に読み取る(Androidの推奨方法)