Von meinem mobilen Gerät (Scanner) versuche ich auf einen Deskriptor in einem angeschlossenen Wearable (Broadcaster) zu schreiben.Android BLE: Deskriptor/Merkmal schreiben schlägt fehl mit GATT_WRITE_NOT_PERMITTED
auf dem tragbaren, ich den Descriptor als
readCharacteristic = new BluetoothGattCharacteristic(Constants.READ_CHAR_UUID,
BluetoothGattCharacteristic.PROPERTY_READ | BluetoothGattCharacteristic.PROPERTY_NOTIFY,
BluetoothGattCharacteristic.PERMISSION_READ);
readCharacteristic.addDescriptor(new BluetoothGattDescriptor(Constants.NOTIFY_DESC_UUID,
BluetoothGattDescriptor.PERMISSION_READ | BluetoothGattDescriptor.PERMISSION_WRITE));
auf dem mobilen definiert haben, versuche ich leider mit
BluetoothGattDescriptor descriptor = readCharacteristic.getDescriptor(Constants.NOTIFY_DESC_UUID);
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE)
der Charakteristik zu schreiben, scheitert dies mit dem Status GATT_WRITE_NOT_PERMITTED in
@Override
public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
}
Im tragbaren Logcat sehe ich gatts_write_attr_perm_check - GATT_WRITE_NOT_PERMIT.
Das gleiche passiert, wenn ich versuche, auf ein Merkmal zu schreiben.
Was ist seltsam ist, dass der Schreibvorgang erfolgreich ist, wenn Sie einen iOS-Scanner verwenden. Dies bedeutet, dass der tragbare Teil korrekt ist.
Ich habe die Berechtigungen in dem Manifest:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Geräte verwendet: Nexus 5-fach 6.0.1 API 23, Moto 360 5.1.1 API 22
jemand eine Idee Hat, wie man Fix dieses Deskriptor/Merkmal Schreibproblem?
Danke, habe ich versucht, mit PERMISSION_WRITE_SIGNED_MITM auf dem Beschreiber, aber jetzt, wenn sie versuchen, um es zu schreiben, ich Status 1 auf onDescriptorWrite. Ich denke, es ist GATT_FAILURE = 0x101? Hast du noch andere Ideen, was helfen könnte? –
Entschuldigung ist ihr irgendein Protokoll? –
Ich habe auch den Beitrag bearbeitet; Wenn Sie versuchen, die Benachrichtigung zu aktivieren, folgen Sie einfach dem Beispiel. –