您有一个
mBluetoothLeService.readCharacteristic(btGattCharacteristic)电话,但没有
onCharacteristicRead(BluetoothGattgatt, final BluetoothGattCharacteristic characteristic, intstatus)回调来接收该值。它是BluetoothGattCallback的一部分。
我对该过程的理解是,首先您会找到
BluetoothDevice一种方法或另一种方法-
可能是通过BLE扫描。您可以通过名称(带有
device.getName())或广告数据来标识它,并使用进行连接
device.connectGatt(context,false/true, gattCallback)。
然后在您的回调中,您将收到连接状态
onConnectionStateChange(BluetoothGatt gatt, int status, intnewState)。如果状态为
BluetoothProfile.STATE_CONNECTED,则可以使用查找服务
gatt.discoverServices()。这将触发
onServicesDiscovered(BluetoothGattgatt, intstatus)您在何处获取可用服务,
gatt.getServices()并通过其UUID标识正确的服务,并通过其UUID获取其特征,
service.getCharacteristics()并再次通过其UUID标识正确的特征。
然后,您将通过读取特性
gatt.readCharacteristic(service.getCharacteristic(CHARACTERISTIC_UUID))。然后,这将触发
onCharacteristicRead(BluetoothGattgatt, final BluetoothGattCharacteristic characteristic, intstatus)回调。在这里,您将检查接收到的特征(由于事物是异步的),
characteristic.getUuid()并根据数据类型读取其String值
characteristic.getStringValue(0)或Float值
getFloatValue(0)等。
由于一系列异步操作,这可能会造成混乱。但是有服务器和客户端都不错的示例代码在这里,更具体的客户端代码是在这个文件中。它们与NewCircle
上有关Android上BLE的精彩视频有关,该视频也对代码进行了一些解释。
您所指的Android示例可能有点令人困惑,因为它还涉及活动/服务交互,并且不仅仅与Bluetooth
LE有关。最好看看NewCircle视频和示例项目…



