Merge "USB: update logic for reporting playback and capture capability of USB devices." into tm-qpr-dev am: 154475ba7a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23479325 Change-Id: I273887a70bbc8131ce048d6290cf938994a89fc1 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -584,15 +584,34 @@ public final class UsbDescriptorParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Returns true only if there is a terminal whose subtype and terminal type are the same as
|
||||||
|
* the given values.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public boolean hasAudioTerminal(int subType) {
|
public boolean hasAudioTerminal(int subType, int terminalType) {
|
||||||
for (UsbDescriptor descriptor : mDescriptors) {
|
for (UsbDescriptor descriptor : mDescriptors) {
|
||||||
if (descriptor instanceof UsbACInterface) {
|
if (descriptor instanceof UsbACTerminal) {
|
||||||
if (((UsbACInterface) descriptor).getSubclass()
|
if (((UsbACTerminal) descriptor).getSubclass() == UsbDescriptor.AUDIO_AUDIOCONTROL
|
||||||
== UsbDescriptor.AUDIO_AUDIOCONTROL
|
&& ((UsbACTerminal) descriptor).getSubtype() == subType
|
||||||
&& ((UsbACInterface) descriptor).getSubtype()
|
&& ((UsbACTerminal) descriptor).getTerminalType() == terminalType) {
|
||||||
== subType) {
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true only if there is an interface whose subtype is the same as the given one and
|
||||||
|
* terminal type is different from the given one.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public boolean hasAudioTerminalExcludeType(int subType, int excludedTerminalType) {
|
||||||
|
for (UsbDescriptor descriptor : mDescriptors) {
|
||||||
|
if (descriptor instanceof UsbACTerminal) {
|
||||||
|
if (((UsbACTerminal) descriptor).getSubclass() == UsbDescriptor.AUDIO_AUDIOCONTROL
|
||||||
|
&& ((UsbACTerminal) descriptor).getSubtype() == subType
|
||||||
|
&& ((UsbACTerminal) descriptor).getTerminalType() != excludedTerminalType) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -604,14 +623,21 @@ public final class UsbDescriptorParser {
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public boolean hasAudioPlayback() {
|
public boolean hasAudioPlayback() {
|
||||||
return hasAudioTerminal(UsbACInterface.ACI_OUTPUT_TERMINAL);
|
return hasAudioTerminalExcludeType(
|
||||||
|
UsbACInterface.ACI_OUTPUT_TERMINAL, UsbTerminalTypes.TERMINAL_USB_STREAMING)
|
||||||
|
&& hasAudioTerminal(
|
||||||
|
UsbACInterface.ACI_INPUT_TERMINAL, UsbTerminalTypes.TERMINAL_USB_STREAMING);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public boolean hasAudioCapture() {
|
public boolean hasAudioCapture() {
|
||||||
return hasAudioTerminal(UsbACInterface.ACI_INPUT_TERMINAL);
|
return hasAudioTerminalExcludeType(
|
||||||
|
UsbACInterface.ACI_INPUT_TERMINAL, UsbTerminalTypes.TERMINAL_USB_STREAMING)
|
||||||
|
&& hasAudioTerminal(
|
||||||
|
UsbACInterface.ACI_OUTPUT_TERMINAL,
|
||||||
|
UsbTerminalTypes.TERMINAL_USB_STREAMING);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user