Merge "Revert "Add support for USB audio docks.""

This commit is contained in:
Eric Laurent
2022-01-25 20:09:03 +00:00
committed by Android (Google) Code Review
5 changed files with 24 additions and 69 deletions

View File

@@ -1376,9 +1376,6 @@ public class AudioDeviceInventory {
case AudioSystem.DEVICE_OUT_USB_HEADSET:
connType = AudioRoutesInfo.MAIN_USB;
break;
case AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET:
connType = AudioRoutesInfo.MAIN_DOCK_SPEAKERS;
break;
}
synchronized (mCurAudioRoutes) {

View File

@@ -41,7 +41,6 @@ public final class UsbAlsaDevice {
private final boolean mIsInputHeadset;
private final boolean mIsOutputHeadset;
private final boolean mIsDock;
private boolean mSelected = false;
private int mOutputState;
@@ -54,7 +53,7 @@ public final class UsbAlsaDevice {
public UsbAlsaDevice(IAudioService audioService, int card, int device, String deviceAddress,
boolean hasOutput, boolean hasInput,
boolean isInputHeadset, boolean isOutputHeadset, boolean isDock) {
boolean isInputHeadset, boolean isOutputHeadset) {
mAudioService = audioService;
mCardNum = card;
mDeviceNum = device;
@@ -63,32 +62,31 @@ public final class UsbAlsaDevice {
mHasInput = hasInput;
mIsInputHeadset = isInputHeadset;
mIsOutputHeadset = isOutputHeadset;
mIsDock = isDock;
}
/**
* @return the ALSA card number associated with this peripheral.
* @returns the ALSA card number associated with this peripheral.
*/
public int getCardNum() {
return mCardNum;
}
/**
* @return the ALSA device number associated with this peripheral.
* @returns the ALSA device number associated with this peripheral.
*/
public int getDeviceNum() {
return mDeviceNum;
}
/**
* @return the USB device device address associated with this peripheral.
* @returns the USB device device address associated with this peripheral.
*/
public String getDeviceAddress() {
return mDeviceAddress;
}
/**
* @return the ALSA card/device address string.
* @returns the ALSA card/device address string.
*/
public String getAlsaCardDeviceString() {
if (mCardNum < 0 || mDeviceNum < 0) {
@@ -100,42 +98,35 @@ public final class UsbAlsaDevice {
}
/**
* @return true if the device supports output.
* @returns true if the device supports output.
*/
public boolean hasOutput() {
return mHasOutput;
}
/**
* @return true if the device supports input (recording).
* @returns true if the device supports input (recording).
*/
public boolean hasInput() {
return mHasInput;
}
/**
* @return true if the device is a headset for purposes of input.
* @returns true if the device is a headset for purposes of input.
*/
public boolean isInputHeadset() {
return mIsInputHeadset;
}
/**
* @return true if the device is a headset for purposes of output.
* @returns true if the device is a headset for purposes of output.
*/
public boolean isOutputHeadset() {
return mIsOutputHeadset;
}
/**
* @return true if the device is a USB dock.
*/
public boolean isDock() {
return mIsDock;
}
/**
* @return true if input jack is detected or jack detection is not supported.
* @returns true if input jack is detected or jack detection is not supported.
*/
private synchronized boolean isInputJackConnected() {
if (mJackDetector == null) {
@@ -145,7 +136,7 @@ public final class UsbAlsaDevice {
}
/**
* @return true if input jack is detected or jack detection is not supported.
* @returns true if input jack is detected or jack detection is not supported.
*/
private synchronized boolean isOutputJackConnected() {
if (mJackDetector == null) {
@@ -199,10 +190,9 @@ public final class UsbAlsaDevice {
try {
// Output Device
if (mHasOutput) {
int device = mIsDock ? AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET
: (mIsOutputHeadset
? AudioSystem.DEVICE_OUT_USB_HEADSET
: AudioSystem.DEVICE_OUT_USB_DEVICE);
int device = mIsOutputHeadset
? AudioSystem.DEVICE_OUT_USB_HEADSET
: AudioSystem.DEVICE_OUT_USB_DEVICE;
if (DEBUG) {
Slog.d(TAG, "pre-call device:0x" + Integer.toHexString(device)
+ " addr:" + alsaCardDeviceString
@@ -241,7 +231,7 @@ public final class UsbAlsaDevice {
/**
* @Override
* @return a string representation of the object.
* @returns a string representation of the object.
*/
public synchronized String toString() {
return "UsbAlsaDevice: [card: " + mCardNum
@@ -283,7 +273,7 @@ public final class UsbAlsaDevice {
/**
* @Override
* @return true if the objects are equivalent.
* @returns true if the objects are equivalent.
*/
public boolean equals(Object obj) {
if (!(obj instanceof UsbAlsaDevice)) {
@@ -295,13 +285,12 @@ public final class UsbAlsaDevice {
&& mHasOutput == other.mHasOutput
&& mHasInput == other.mHasInput
&& mIsInputHeadset == other.mIsInputHeadset
&& mIsOutputHeadset == other.mIsOutputHeadset
&& mIsDock == other.mIsDock);
&& mIsOutputHeadset == other.mIsOutputHeadset);
}
/**
* @Override
* @return a hash code generated from the object contents.
* @returns a hash code generated from the object contents.
*/
public int hashCode() {
final int prime = 31;
@@ -312,7 +301,6 @@ public final class UsbAlsaDevice {
result = prime * result + (mHasInput ? 0 : 1);
result = prime * result + (mIsInputHeadset ? 0 : 1);
result = prime * result + (mIsOutputHeadset ? 0 : 1);
result = prime * result + (mIsDock ? 0 : 1);
return result;
}

View File

@@ -237,7 +237,6 @@ public final class UsbAlsaManager {
if (hasInput || hasOutput) {
boolean isInputHeadset = parser.isInputHeadset();
boolean isOutputHeadset = parser.isOutputHeadset();
boolean isDock = parser.isDock();
if (mAudioService == null) {
Slog.e(TAG, "no AudioService");
@@ -247,7 +246,7 @@ public final class UsbAlsaManager {
UsbAlsaDevice alsaDevice =
new UsbAlsaDevice(mAudioService, cardRec.getCardNum(), 0 /*device*/,
deviceAddress, hasOutput, hasInput,
isInputHeadset, isOutputHeadset, isDock);
isInputHeadset, isOutputHeadset);
if (alsaDevice != null) {
alsaDevice.setDeviceNameAndDescription(
cardRec.getCardName(), cardRec.getCardDescription());

View File

@@ -165,7 +165,7 @@ public class UsbHostManager {
pw.println("manfacturer:0x" + Integer.toHexString(deviceDescriptor.getVendorID())
+ " product:" + Integer.toHexString(deviceDescriptor.getProductID()));
pw.println("isHeadset[in: " + parser.isInputHeadset()
+ " , out: " + parser.isOutputHeadset() + "], isDock: " + parser.isDock());
+ " , out: " + parser.isOutputHeadset() + "]");
} else {
pw.println(formatTime() + " Disconnect " + mDeviceAddress);
}
@@ -179,8 +179,9 @@ public class UsbHostManager {
UsbDescriptorsTree descriptorTree = new UsbDescriptorsTree();
descriptorTree.parse(parser);
descriptorTree.report(new TextReportCanvas(parser, stringBuilder));
stringBuilder.append("isHeadset[in: " + parser.isInputHeadset()
+ " , out: " + parser.isOutputHeadset() + "], isDock: " + parser.isDock());
+ " , out: " + parser.isOutputHeadset() + "]");
pw.println(stringBuilder.toString());
} else {
pw.println(formatTime() + " Disconnect " + mDeviceAddress);
@@ -197,8 +198,9 @@ public class UsbHostManager {
descriptor.report(canvas);
}
pw.println(stringBuilder.toString());
pw.println("isHeadset[in: " + parser.isInputHeadset()
+ " , out: " + parser.isOutputHeadset() + "], isDock: " + parser.isDock());
+ " , out: " + parser.isOutputHeadset() + "]");
} else {
pw.println(formatTime() + " Disconnect " + mDeviceAddress);
}

View File

@@ -870,35 +870,4 @@ public final class UsbDescriptorParser {
return getOutputHeadsetProbability() >= OUT_HEADSET_TRIGGER;
}
/**
* isDock() indicates if the connected USB output peripheral is a docking station with
* audio output.
* A valid audio dock must declare only one audio output control terminal of type
* TERMINAL_EXTERN_DIGITAL.
*/
public boolean isDock() {
if (hasMIDIInterface() || hasHIDInterface()) {
return false;
}
ArrayList<UsbDescriptor> acDescriptors =
getACInterfaceDescriptors(UsbACInterface.ACI_OUTPUT_TERMINAL,
UsbACInterface.AUDIO_AUDIOCONTROL);
if (acDescriptors.size() != 1) {
return false;
}
if (acDescriptors.get(0) instanceof UsbACTerminal) {
UsbACTerminal outDescr = (UsbACTerminal) acDescriptors.get(0);
if (outDescr.getTerminalType() == UsbTerminalTypes.TERMINAL_EXTERN_DIGITAL) {
return true;
}
} else {
Log.w(TAG, "Undefined Audio Output terminal l: " + acDescriptors.get(0).getLength()
+ " t:0x" + Integer.toHexString(acDescriptors.get(0).getType()));
}
return false;
}
}