我知道:
- 如何阅读特征值。
但我不知道:
- 如何将数据写入固件。
我试了好几次,但没有奏效。
这是编码:
if ((charaProp | BluetoothGattCharacteristic.PROPERTY_READ) > 0) {
System.out.println("read!!!!!!");
// If there is an active notification on a characteristic,
// clear
// it first so it doesn't update the data field on the user
// interface.
if (mNotifyCharacteristic != null) {
mBluetoothLeService.setCharacteristicNotification(
mNotifyCharacteristic, false);
mNotifyCharacteristic = null;
}
mBluetoothLeService.readCharacteristic(characteristic);
}
if ((charaProp | BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0) {
System.out.println("notify!!!!!!");
mNotifyCharacteristic = characteristic;
mBluetoothLeService.setCharacteristicNotification(
characteristic, true);
}
if ((charaProp | BluetoothGattCharacteristic.PROPERTY_WRITE) > 0) {
if (SampleGattAttributes.AppConfigToBongCharacteristicUUID
.equals(characteristic.getUuid())) {
System.out.println("write!!!!!!");
mBluetoothLeService.writeCharacteristic(characteristic);
}
}
public void writeCharacteristic(BluetoothGattCharacteristic characteristic) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
if (UUID_SEND_CONFIG_TO_BONG.equals(characteristic.getUuid())) {
Calendar date = Calendar.getInstance();
StringBuilder data = new StringBuilder();
String data_date_y = String.format("%4s", date.get(Calendar.YEAR))
.replace(' ', '0');
String data_date_m = String.format("%2s", date.get(Calendar.MONTH))
.replace(' ', '0');
String data_date_d = String.format("%2s", date.get(Calendar.DATE))
.replace(' ', '0');
String data_date_h = String.format("%2s", date.get(Calendar.HOUR))
.replace(' ', '0');
String data_date_min = String.format("%2s",
date.get(Calendar.MINUTE)).replace(' ', '0');
data.append("10FFFF");
data.append(data_date_y);
data.append(data_date_m);
data.append(data_date_d);
data.append(data_date_h);
data.append(data_date_min);
System.out.println(data);
byte[] dataByte = data.toString().getBytes();
characteristic.setValue(dataByte);
mBluetoothGatt.writeCharacteristic(characteristic);
}
}
// onCharacteristicWrite()不会被调用
@Override
public void onCharacteristicWrite(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic, int status) {
System.out.println("writeCharacteristic111");
System.out.println("status:" + status);
System.out.println(BluetoothGatt.GATT_SUCCESS);
if (status == BluetoothGatt.GATT_SUCCESS) {
broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
}
}
任何人都可以帮我吗? – steven
只是一个快速的笔记,不知道它解决您的问题 - 但每次这个错误报告(https://code.google.com/p/android/issues/detail?id=58979),您使用的示例代码是不正确:按位检查“|”应该 ”&”。因此,如果你的属性不支持你正在检查的任何属性,它仍然会出现它。 HTH。 – jkraybill