2016-08-25 3 views
0

Problem:

Ich habe Mac Buch (O X 10.11.6) fungiert als BLE Zentral Gerät und Android Phone (O 6.0) wirkt als Peripheriegerät.charakteristische Benachrichtigung auf Mac BLE Zentrale für eine Android-Set (6,0) BLE periphere Eigenschaften nicht

Android Peripheral wirbt merkmal 1 mit Eigenschaften BluetoothGattCharacteristic.PROPERTY_WRITE | BluetoothGattCharacteristic.PROPERTY_NOTIFY

Mac Buch (BLE Central) entdeckt Android Peripheral erfolgreich mit Charakteristik-1. Wenn BLE Central versucht, zu tun, setNotifyValue: YES für dieses Merkmal schlägt mit unterem Fehler fehl.

Fehler beim Ändern des Benachrichtigungsstatus: Fehlerdomäne = CBErrorDomain Code = 0 "Unbekannter Fehler." Userinfo = {NSLocalizedDescription = unbekannte Fehler.}

Incase, wenn das Peripheriegerät ein iPhone (IOS) ist die dann setNotifyValue ähnliche Charakteristik aufweist: JA gelungen wird.

habe ich versucht, die unten Kombinationen für die Charakteristik-1 mit

1- BluetoothGattCharacteristic.PROPERTY_WRITE | BluetoothGattCharacteristic.PROPERTY_INDICATE

2- BluetoothGattCharacteristic.PROPERTY_READ | BluetoothGattCharacteristic.PROPERTY_NOTIFY

3- BluetoothGattCharacteristic.PROPERTY_READ | BluetoothGattCharacteristic.PROPERTY_INDICATE

Aber leider funktionierte keiner von ihnen.

Kann mir jemand bei der Einstellung meldepflichtig zu JA auf Mac OS X Central für Android Peripheral Eigenschaft?

Antwort

0

Auf Android, benötigen Sie Set-Deskriptor zur Aktivierung der Benachrichtigung.

BluetoothGattService gattService = new BluetoothGattService(YOUR_SERVICE_UUID, 
      BluetoothGattService.SERVICE_TYPE_PRIMARY); 

    BluetoothGattCharacteristic characteristic = new BluetoothGattCharacteristic(YOUR_CHARACTERISTIC_UUID, 
      BluetoothGattCharacteristic.PROPERTY_WRITE | BluetoothGattCharacteristic.PROPERTY_INDICATE, BluetoothGattCharacteristic.PERMISSION_WRITE); 
    BluetoothGattDescriptor descriptor = new BluetoothGattDescriptor(UUID.fromString("00002902-0000-1000-8000-00805F9B34FB"), 
      BluetoothGattDescriptor.PERMISSION_READ | BluetoothGattDescriptor.PERMISSION_WRITE); 
    descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE); 
    characteristic.addDescriptor(descriptor); 

    gattService.addCharacteristic(characteristic); 
+0

NR. Dies funktioniert nicht. Ich habe die obige Methode ausprobiert. Hier ist der Fehler auf der MAC-Seite BLE Scanner: 'Fehler Benachrichtigung Status ändern: Fehler Domain = CBErrorDomain Code = 1" Ein oder mehrere Parameter waren ungültig. " UserInfo = {NSLocalizedDescription = Ein oder mehrere Parameter waren ungültig.} ' – Ranga

+0

Stellen Sie sicher, dass Sie" 00002902-0000-1000-8000-00805F9B34FB "als Deskriptor-UUID verwenden. Für mich geht das. – Thomas

+0

OK. Warum können wir die UUID nicht anders als die oben erwähnte verwenden? – Ranga