Tôi có một ứng dụng Android (Glass) hoạt động như một BLE trung tâm và kết nối với một BLE ngoại vi (mà là một thiết bị iOS sử dụng Core Bluetooth). Tôi đang cố đọc từ và ghi vào thiết bị ngoại vi.BLE Android: không thể viết một đặc trưng (không PROPERTY_WRITE)
Hoạt động đọc tốt (và nhận thông báo cũng hoạt động tốt).
Tuy nhiên tôi không quản lý để viết một đặc tính. Dưới đây là mã của tôi:
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
BluetoothGattService bse = gatt.getService(TRANSFER_SERVICE_UUID);
BluetoothGattCharacteristic bgc = bse.getCharacteristic(TRANSFER_CHARACTERISTIC_UUID);
bgc.setValue("Hello");
boolean writeOk = gatt.writeCharacteristic(bgc);
}
}
@Override
public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
// never called
}
writeOk
luôn là false
. Tôi đã sửa lỗi và phát hiện ra rằng lý do là các thuộc tính. bgc.getProperties()
luôn trả về 50
, bất kể thuộc tính nào được đặt ở phía iOS. 50
là PROPERTY_READ
, PROPERTY_NOTIFY
và PROPERTY_INDICATE
, nhưng nó thiếu PROPERTY_WRITE
, vì vậy BluetoothGatt.writeCharacteristic()
ngay lập tức thoát:
public boolean writeCharacteristic(BluetoothGattCharacteristic characteristic) {
if ((characteristic.getProperties() & BluetoothGattCharacteristic.PROPERTY_WRITE) == 0
&& (characteristic.getProperties() &
BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE) == 0) return false;
...
}
Dường như với tôi rằng các thuộc tính không được truyền một cách chính xác từ iOS ngoại vi cho Android trung ương. Khi kết nối với thiết bị ngoại vi iOS với trung tâm iOS, các thuộc tính được truyền chính xác và viết các tác phẩm.
Tôi đã thử:
- ghép nối các thiết bị
- sử dụng reliable write (but I don't really know what that is anyway)
Vì vậy, - tôi làm điều gì sai trái về phía Android? Nếu không: Đây có phải là lỗi không? Hay iOS chỉ muốn nhận bài viết từ thiết bị iOS?
Tôi đang sử dụng Android 4.4.2 (Glass XE18.11).
bạn có thể gợi ý cho tôi cách bạn đọc Đặc trưng từ ios cho android không? – Rajesh