Ben BLE merkezi gibi davranır ve (Çekirdek Bluetooth kullanarak bir iOS cihazı olan) bir BLE periferik bağlanan Android (Cam) uygulamaya sahip yazamazsınız. Çevreyle ilgili ve yazmayı okumaya çalışıyorum.Android BLE: Bir Karakteristik (hayır PROPERTY_WRITE)
Okuma işleri iyi çalışıyor (ve alma bildirimleri de iyi çalışıyor). Bununla birlikte, bir karakteristiği yazmayı başaramamıştım.
@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
daima false
geçerli: İşte benim kod. Ben hata ayıkladı ve nedeninin özellikleri olduğunu öğrendim. IOS tarafında hangi özellikler ayarlanmış olursa olsun bgc.getProperties()
her zaman 50
değerini döndürür. 50
PROPERTY_READ
, PROPERTY_NOTIFY
ve PROPERTY_INDICATE
, ama onun PROPERTY_WRITE
eksik, bu yüzden BluetoothGatt.writeCharacteristic()
hemen çıkar:
public boolean writeCharacteristic(BluetoothGattCharacteristic characteristic) {
if ((characteristic.getProperties() & BluetoothGattCharacteristic.PROPERTY_WRITE) == 0
&& (characteristic.getProperties() &
BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE) == 0) return false;
...
}
özellikler Android merkezi için periferik iOS doğru iletilmez geliyor bana. IOS çevre birimine iOS merkezi ile bağlanırken, özellikler doğru bir şekilde iletilir ve yazı yazılır.
denedim:
- Yani
reliable write (but I don't really know what that is anyway) kullanarak cihazları
Android 4.4.2 (Glass XE18.11) kullanıyorum.
Lütfen ios'dan Android'e nasıl karakteristik okuduğunuzu önerebilir misiniz? – Rajesh