5

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. 50PROPERTY_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ı

  • eşleştirme - Ben Android tarafında yanlış bir şey yapıyorum? Değilse: Bu bir hata mı? Yoksa iOS sadece iOS cihazlardan yazı almak istiyor mu?

    Android 4.4.2 (Glass XE18.11) kullanıyorum.

  • +0

    Lütfen ios'dan Android'e nasıl karakteristik okuduğunuzu önerebilir misiniz? – Rajesh

    cevap

    2

    bu Android BLE API bir hata olduğunu görünüyor. En son güncellemeden sonra (Glass XE18.3) bu davranış gitti ve iletimi iletildiği gibi beklendiği gibi çalışır.

    +0

    Sony, Motorola 5 ve 4.4.4 sürümlerini kullanıyorum. Ancak yazma hatası yazma özellikleri başarısız oldu. – Prasad