From 2eb39497bc6da4c793247d48db06b45a78903c97 Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Fri, 17 Mar 2017 17:23:08 -0700 Subject: [PATCH] Add missing type for USB headset devices Change-Id: Ib3195442bfefd00edf46592e743617fe37b81a33 Test: audio playback and capture regression tests --- api/current.txt | 1 + api/system-current.txt | 1 + api/test-current.txt | 1 + media/java/android/media/AudioDeviceInfo.java | 7 +++++++ media/java/android/media/AudioSystem.java | 20 +++++++++++++++++++ .../android/media/audiofx/Virtualizer.java | 1 + 6 files changed, 31 insertions(+) diff --git a/api/current.txt b/api/current.txt index 8d7dcccfe1c1f..ac5a6a89bce50 100644 --- a/api/current.txt +++ b/api/current.txt @@ -20937,6 +20937,7 @@ package android.media { field public static final int TYPE_UNKNOWN = 0; // 0x0 field public static final int TYPE_USB_ACCESSORY = 12; // 0xc field public static final int TYPE_USB_DEVICE = 11; // 0xb + field public static final int TYPE_USB_HEADSET = 22; // 0x16 field public static final int TYPE_WIRED_HEADPHONES = 4; // 0x4 field public static final int TYPE_WIRED_HEADSET = 3; // 0x3 } diff --git a/api/system-current.txt b/api/system-current.txt index 53c9e91f85be4..9b9d5308eb1b2 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -22686,6 +22686,7 @@ package android.media { field public static final int TYPE_UNKNOWN = 0; // 0x0 field public static final int TYPE_USB_ACCESSORY = 12; // 0xc field public static final int TYPE_USB_DEVICE = 11; // 0xb + field public static final int TYPE_USB_HEADSET = 22; // 0x16 field public static final int TYPE_WIRED_HEADPHONES = 4; // 0x4 field public static final int TYPE_WIRED_HEADSET = 3; // 0x3 } diff --git a/api/test-current.txt b/api/test-current.txt index bd0e4662fad1d..4b910d7e73de9 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -21038,6 +21038,7 @@ package android.media { field public static final int TYPE_UNKNOWN = 0; // 0x0 field public static final int TYPE_USB_ACCESSORY = 12; // 0xc field public static final int TYPE_USB_DEVICE = 11; // 0xb + field public static final int TYPE_USB_HEADSET = 22; // 0x16 field public static final int TYPE_WIRED_HEADPHONES = 4; // 0x4 field public static final int TYPE_WIRED_HEADSET = 3; // 0x3 } diff --git a/media/java/android/media/AudioDeviceInfo.java b/media/java/android/media/AudioDeviceInfo.java index 9922b7237b742..1b89c96602d3a 100644 --- a/media/java/android/media/AudioDeviceInfo.java +++ b/media/java/android/media/AudioDeviceInfo.java @@ -115,6 +115,10 @@ public final class AudioDeviceInfo { * A type-agnostic device used for communication with external audio systems */ public static final int TYPE_BUS = 21; + /** + * A device type describing a USB audio headset. + */ + public static final int TYPE_USB_HEADSET = 22; private final AudioDevicePort mPort; @@ -276,6 +280,7 @@ public final class AudioDeviceInfo { INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET, TYPE_DOCK); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_USB_ACCESSORY, TYPE_USB_ACCESSORY); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_USB_DEVICE, TYPE_USB_DEVICE); + INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_USB_HEADSET, TYPE_USB_HEADSET); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_TELEPHONY_TX, TYPE_TELEPHONY); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_LINE, TYPE_LINE_ANALOG); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_HDMI_ARC, TYPE_HDMI_ARC); @@ -295,6 +300,7 @@ public final class AudioDeviceInfo { INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_DGTL_DOCK_HEADSET, TYPE_DOCK); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_USB_ACCESSORY, TYPE_USB_ACCESSORY); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_USB_DEVICE, TYPE_USB_DEVICE); + INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_USB_HEADSET, TYPE_USB_HEADSET); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_FM_TUNER, TYPE_FM_TUNER); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_TV_TUNER, TYPE_TV_TUNER); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_LINE, TYPE_LINE_ANALOG); @@ -320,6 +326,7 @@ public final class AudioDeviceInfo { EXT_TO_INT_DEVICE_MAPPING.put(TYPE_HDMI, AudioSystem.DEVICE_OUT_HDMI); EXT_TO_INT_DEVICE_MAPPING.put(TYPE_HDMI_ARC, AudioSystem.DEVICE_OUT_HDMI_ARC); EXT_TO_INT_DEVICE_MAPPING.put(TYPE_USB_DEVICE, AudioSystem.DEVICE_OUT_USB_DEVICE); + EXT_TO_INT_DEVICE_MAPPING.put(TYPE_USB_HEADSET, AudioSystem.DEVICE_OUT_USB_HEADSET); EXT_TO_INT_DEVICE_MAPPING.put(TYPE_USB_ACCESSORY, AudioSystem.DEVICE_OUT_USB_ACCESSORY); EXT_TO_INT_DEVICE_MAPPING.put(TYPE_DOCK, AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET); EXT_TO_INT_DEVICE_MAPPING.put(TYPE_FM, AudioSystem.DEVICE_OUT_FM); diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java index b44a710a1cb7e..47ecf329058c2 100644 --- a/media/java/android/media/AudioSystem.java +++ b/media/java/android/media/AudioSystem.java @@ -384,6 +384,8 @@ public class AudioSystem public static final int DEVICE_OUT_SPEAKER_SAFE = 0x400000; public static final int DEVICE_OUT_IP = 0x800000; public static final int DEVICE_OUT_BUS = 0x1000000; + public static final int DEVICE_OUT_PROXY = 0x2000000; + public static final int DEVICE_OUT_USB_HEADSET = 0x4000000; public static final int DEVICE_OUT_DEFAULT = DEVICE_BIT_DEFAULT; @@ -412,6 +414,8 @@ public class AudioSystem DEVICE_OUT_SPEAKER_SAFE | DEVICE_OUT_IP | DEVICE_OUT_BUS | + DEVICE_OUT_PROXY | + DEVICE_OUT_USB_HEADSET | DEVICE_OUT_DEFAULT); public static final int DEVICE_OUT_ALL_A2DP = (DEVICE_OUT_BLUETOOTH_A2DP | DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES | @@ -452,6 +456,8 @@ public class AudioSystem public static final int DEVICE_IN_LOOPBACK = DEVICE_BIT_IN | 0x40000; public static final int DEVICE_IN_IP = DEVICE_BIT_IN | 0x80000; public static final int DEVICE_IN_BUS = DEVICE_BIT_IN | 0x100000; + public static final int DEVICE_IN_PROXY = DEVICE_BIT_IN | 0x1000000; + public static final int DEVICE_IN_USB_HEADSET = DEVICE_BIT_IN | 0x2000000; public static final int DEVICE_IN_DEFAULT = DEVICE_BIT_IN | DEVICE_BIT_DEFAULT; public static final int DEVICE_IN_ALL = (DEVICE_IN_COMMUNICATION | @@ -475,6 +481,8 @@ public class AudioSystem DEVICE_IN_LOOPBACK | DEVICE_IN_IP | DEVICE_IN_BUS | + DEVICE_IN_PROXY | + DEVICE_IN_USB_HEADSET | DEVICE_IN_DEFAULT); public static final int DEVICE_IN_ALL_SCO = DEVICE_IN_BLUETOOTH_SCO_HEADSET; public static final int DEVICE_IN_ALL_USB = (DEVICE_IN_USB_ACCESSORY | @@ -511,6 +519,8 @@ public class AudioSystem public static final String DEVICE_OUT_SPEAKER_SAFE_NAME = "speaker_safe"; public static final String DEVICE_OUT_IP_NAME = "ip"; public static final String DEVICE_OUT_BUS_NAME = "bus"; + public static final String DEVICE_OUT_PROXY_NAME = "proxy"; + public static final String DEVICE_OUT_USB_HEADSET_NAME = "usb_headset"; public static final String DEVICE_IN_COMMUNICATION_NAME = "communication"; public static final String DEVICE_IN_AMBIENT_NAME = "ambient"; @@ -533,6 +543,8 @@ public class AudioSystem public static final String DEVICE_IN_LOOPBACK_NAME = "loopback"; public static final String DEVICE_IN_IP_NAME = "ip"; public static final String DEVICE_IN_BUS_NAME = "bus"; + public static final String DEVICE_IN_PROXY_NAME = "proxy"; + public static final String DEVICE_IN_USB_HEADSET_NAME = "usb_headset"; public static String getOutputDeviceName(int device) { @@ -587,6 +599,10 @@ public class AudioSystem return DEVICE_OUT_IP_NAME; case DEVICE_OUT_BUS: return DEVICE_OUT_BUS_NAME; + case DEVICE_OUT_PROXY: + return DEVICE_OUT_PROXY_NAME; + case DEVICE_OUT_USB_HEADSET: + return DEVICE_OUT_USB_HEADSET_NAME; case DEVICE_OUT_DEFAULT: default: return Integer.toString(device); @@ -638,6 +654,10 @@ public class AudioSystem return DEVICE_IN_IP_NAME; case DEVICE_IN_BUS: return DEVICE_IN_BUS_NAME; + case DEVICE_IN_PROXY: + return DEVICE_IN_PROXY_NAME; + case DEVICE_IN_USB_HEADSET: + return DEVICE_IN_USB_HEADSET_NAME; case DEVICE_IN_DEFAULT: default: return Integer.toString(device); diff --git a/media/java/android/media/audiofx/Virtualizer.java b/media/java/android/media/audiofx/Virtualizer.java index 49e56bc9b507e..74b6fc13ade4e 100644 --- a/media/java/android/media/audiofx/Virtualizer.java +++ b/media/java/android/media/audiofx/Virtualizer.java @@ -329,6 +329,7 @@ public class Virtualizer extends AudioEffect { case AudioDeviceInfo.TYPE_WIRED_HEADPHONES: case AudioDeviceInfo.TYPE_BLUETOOTH_SCO: case AudioDeviceInfo.TYPE_BUILTIN_EARPIECE: + case AudioDeviceInfo.TYPE_USB_HEADSET: return VIRTUALIZATION_MODE_BINAURAL; case AudioDeviceInfo.TYPE_BUILTIN_SPEAKER: case AudioDeviceInfo.TYPE_LINE_ANALOG: