diff --git a/services/usb/java/com/android/server/usb/UsbHostManager.java b/services/usb/java/com/android/server/usb/UsbHostManager.java index bcbae607d9f3a..5860fc7c81ccc 100644 --- a/services/usb/java/com/android/server/usb/UsbHostManager.java +++ b/services/usb/java/com/android/server/usb/UsbHostManager.java @@ -314,14 +314,22 @@ public class UsbHostManager { mConnectedUsbCard = cardsParser.getNumCardRecords() - 1; mConnectedUsbDeviceNum = 0; - if (!waitForAlsaFile(mConnectedUsbCard, mConnectedUsbDeviceNum, false)) { - return; - } - mConnectedHasPlayback = devicesParser.hasPlaybackDevices(mConnectedUsbCard); mConnectedHasCapture = devicesParser.hasCaptureDevices(mConnectedUsbCard); mConnectedHasMIDI = devicesParser.hasMIDIDevices(mConnectedUsbCard); + // Playback device file needed/present? + if (mConnectedHasPlayback && + !waitForAlsaFile(mConnectedUsbCard, mConnectedUsbDeviceNum, false)) { + return; + } + + // Capture device file needed/present? + if (mConnectedHasCapture && + !waitForAlsaFile(mConnectedUsbCard, mConnectedUsbDeviceNum, true)) { + return; + } + if (DEBUG_AUDIO) { Slog.d(TAG, "usb: hasPlayback:" + mConnectedHasPlayback + " hasCapture:" + mConnectedHasCapture);