summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/usb/java/com/android/server/usb/UsbUniversalMidiDevice.java11
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;
}