从这些文档中,我看到了如何在没有响应的情况下编写这样的文档:
BluetoothGattCharacteristic characteristic = ...
characteristic.setValue(bytes);
mBluetoothGatt.writeCharacteristic(characteristic);
如何使用响应预置写请求操作?
(在iOS中有选择写类型CBCharacteristicWriteWithResponse和CBCharacteristicWriteWithoutResponse的选项)
发布于 2015-05-18 19:11:27
从文件中:
公共无效setWriteType (int writeType) 添加到API级别18中,设置此特性的写入类型。 设置特征的写入类型将决定writeCharacteristic(BluetoothGattCharacteristic)函数如何写入此特性。 参数writeType写入类型以实现此特性。可以是: WRITE_TYPE_DEFAULT、WRITE_TYPE_NO_RESPONSE或WRITE_TYPE_SIGNED之一。
发布于 2015-05-12 20:41:29
检查该特性是否可写:
(characteristic.getProperties() & (BluetoothGattCharacteristic.PROPERTY_WRITE | BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE))) != 0
发布于 2015-05-19 08:49:37
是啊,我没提过。但是,请注意,应用不同的写入类型是在以下条件下工作的:您写入值的特性必须是可写的,这是蓝牙设备特有的逻辑。先找出你的特点是什么类型,因为它可能有相同的类型,你需要。一旦它满足了可写的条件,每个WRITE_TYPE都应该为您工作。
通过分析BluetoothGatt的writeCharacteristic()方法,可以清楚地看到:
public boolean writeCharacteristic(BluetoothGattCharacteristic characteristic) {
if ((characteristic.getProperties() & BluetoothGattCharacteristic.PROPERTY_WRITE) == 0
&& (characteristic.getProperties() &
BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE) == 0) return false;
if (VDBG) Log.d(TAG, "writeCharacteristic() - uuid: " + characteristic.getUuid());
if (mService == null || mClientIf == 0 || characteristic.getValue() == null) return false;
BluetoothGattService service = characteristic.getService();
if (service == null) return false;
BluetoothDevice device = service.getDevice();
if (device == null) return false;
synchronized(mDeviceBusy) {
if (mDeviceBusy) return false;
mDeviceBusy = true;
}
try {
mService.writeCharacteristic(mClientIf, device.getAddress(),
service.getType(), service.getInstanceId(),
new ParcelUuid(service.getUuid()), characteristic.getInstanceId(),
new ParcelUuid(characteristic.getUuid()),
characteristic.getWriteType(), AUTHENTICATION_NONE,
characteristic.getValue());
} catch (RemoteException e) {
Log.e(TAG,"",e);
mDeviceBusy = false;
return false;
}
return true;
}
我知道这是我的第二个答案,但它为我的第一篇文章提供了详细的说明。希望你能帮上忙。
https://stackoverflow.com/questions/30200871
复制相似问题