diff options
| -rw-r--r-- | services/usb/java/com/android/server/usb/UsbUniversalMidiDevice.java | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/services/usb/java/com/android/server/usb/UsbUniversalMidiDevice.java b/services/usb/java/com/android/server/usb/UsbUniversalMidiDevice.java index db0c80f189d3..13d404caf6a2 100644 --- a/services/usb/java/com/android/server/usb/UsbUniversalMidiDevice.java +++ b/services/usb/java/com/android/server/usb/UsbUniversalMidiDevice.java @@ -218,14 +218,13 @@ public final class UsbUniversalMidiDevice implements Closeable { if (doesInterfaceContainInput && doesInterfaceContainOutput) { UsbDeviceConnection connection = manager.openDevice(mUsbDevice); - if (!connection.claimInterface(interfaceDescriptor.toAndroid(mParser), true)) { - Log.d(TAG, "Can't claim control interface"); - continue; - } + + // The ALSA does not handle switching to the MIDI 2.0 interface correctly + // and stops exposing /dev/snd/midiC1D0 after calling connection.setInterface(). + // Thus, simply use the control interface (interface zero). int defaultMidiProtocol = mMidiBlockParser.calculateMidiType(connection, - interfaceDescriptor.getInterfaceNumber(), + 0, interfaceDescriptor.getAlternateSetting()); - connection.close(); return defaultMidiProtocol; } |