OSDN Git Service

BluetoothMidiDevice: change write type to support JamStik
authorPhil Burk <philburk@google.com>
Tue, 22 Sep 2015 19:07:31 +0000 (12:07 -0700)
committerGlenn Kasten <gkasten@google.com>
Mon, 12 Oct 2015 23:29:46 +0000 (23:29 +0000)
Temporarily use a Request instead of a Command so that the JamStik
will be properly enabled.

Bug: 24207964
Change-Id: I3d11732958c46e6039405b5969d5af0db8032fb9
Signed-off-by: Phil Burk <philburk@google.com>
(cherry picked from commit 95129f50c68c734c5ebdf32ff6b8b9c63cc1ada7)

media/packages/BluetoothMidiService/src/com/android/bluetoothmidiservice/BluetoothMidiDevice.java

index e6d59e4..444705c 100644 (file)
@@ -147,14 +147,22 @@ public final class BluetoothMidiDevice {
             // switch to receiving notifications after initial characteristic read
             mBluetoothGatt.setCharacteristicNotification(characteristic, true);
 
+            // Use writeType that requests acknowledgement.
+            // This improves compatibility with various BLE-MIDI devices.
+            int originalWriteType = characteristic.getWriteType();
+            characteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT);
+
             BluetoothGattDescriptor descriptor = characteristic.getDescriptor(
                     CLIENT_CHARACTERISTIC_CONFIG);
             if (descriptor != null) {
                 descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
-                mBluetoothGatt.writeDescriptor(descriptor);
+                boolean result = mBluetoothGatt.writeDescriptor(descriptor);
+                Log.d(TAG, "writeDescriptor returned " + result);
             } else {
                 Log.e(TAG, "No CLIENT_CHARACTERISTIC_CONFIG for device " + mBluetoothDevice);
             }
+
+            characteristic.setWriteType(originalWriteType);
         }
 
         @Override