Loading media/java/android/media/AudioManager.java +26 −0 Original line number Diff line number Diff line Loading @@ -2712,6 +2712,32 @@ public class AudioManager { } } /** * @hide */ public static String audioFocusToString(int focus) { switch (focus) { case AUDIOFOCUS_NONE: return "AUDIOFOCUS_NONE"; case AUDIOFOCUS_GAIN: return "AUDIOFOCUS_GAIN"; case AUDIOFOCUS_GAIN_TRANSIENT: return "AUDIOFOCUS_GAIN_TRANSIENT"; case AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK: return "AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK"; case AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE: return "AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE"; case AUDIOFOCUS_LOSS: return "AUDIOFOCUS_LOSS"; case AUDIOFOCUS_LOSS_TRANSIENT: return "AUDIOFOCUS_LOSS_TRANSIENT"; case AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: // Note CAN_DUCK not MAY_DUCK. return "AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK"; default: return "AUDIO_FOCUS_UNKNOWN(" + focus + ")"; } } /** * Used to indicate no audio focus has been gained or lost, or requested. */ Loading media/java/android/media/AudioSystem.java +169 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,175 @@ public class AudioSystem } } /** * @hide * Convert a native audio format integer constant to a string. */ public static String audioFormatToString(int audioFormat) { switch (audioFormat) { case /* AUDIO_FORMAT_INVALID */ 0xFFFFFFFF: return "AUDIO_FORMAT_INVALID"; case /* AUDIO_FORMAT_DEFAULT */ 0: return "AUDIO_FORMAT_DEFAULT"; case /* AUDIO_FORMAT_MP3 */ 0x01000000: return "AUDIO_FORMAT_MP3"; case /* AUDIO_FORMAT_AMR_NB */ 0x02000000: return "AUDIO_FORMAT_AMR_NB"; case /* AUDIO_FORMAT_AMR_WB */ 0x03000000: return "AUDIO_FORMAT_AMR_WB"; case /* AUDIO_FORMAT_AAC */ 0x04000000: return "AUDIO_FORMAT_AAC"; case /* AUDIO_FORMAT_HE_AAC_V1 */ 0x05000000: return "AUDIO_FORMAT_HE_AAC_V1"; case /* AUDIO_FORMAT_HE_AAC_V2 */ 0x06000000: return "AUDIO_FORMAT_HE_AAC_V2"; case /* AUDIO_FORMAT_VORBIS */ 0x07000000: return "AUDIO_FORMAT_VORBIS"; case /* AUDIO_FORMAT_OPUS */ 0x08000000: return "AUDIO_FORMAT_OPUS"; case /* AUDIO_FORMAT_AC3 */ 0x09000000: return "AUDIO_FORMAT_AC3"; case /* AUDIO_FORMAT_E_AC3 */ 0x0A000000: return "AUDIO_FORMAT_E_AC3"; case /* AUDIO_FORMAT_DTS */ 0x0B000000: return "AUDIO_FORMAT_DTS"; case /* AUDIO_FORMAT_DTS_HD */ 0x0C000000: return "AUDIO_FORMAT_DTS_HD"; case /* AUDIO_FORMAT_IEC61937 */ 0x0D000000: return "AUDIO_FORMAT_IEC61937"; case /* AUDIO_FORMAT_DOLBY_TRUEHD */ 0x0E000000: return "AUDIO_FORMAT_DOLBY_TRUEHD"; case /* AUDIO_FORMAT_EVRC */ 0x10000000: return "AUDIO_FORMAT_EVRC"; case /* AUDIO_FORMAT_EVRCB */ 0x11000000: return "AUDIO_FORMAT_EVRCB"; case /* AUDIO_FORMAT_EVRCWB */ 0x12000000: return "AUDIO_FORMAT_EVRCWB"; case /* AUDIO_FORMAT_EVRCNW */ 0x13000000: return "AUDIO_FORMAT_EVRCNW"; case /* AUDIO_FORMAT_AAC_ADIF */ 0x14000000: return "AUDIO_FORMAT_AAC_ADIF"; case /* AUDIO_FORMAT_WMA */ 0x15000000: return "AUDIO_FORMAT_WMA"; case /* AUDIO_FORMAT_WMA_PRO */ 0x16000000: return "AUDIO_FORMAT_WMA_PRO"; case /* AUDIO_FORMAT_AMR_WB_PLUS */ 0x17000000: return "AUDIO_FORMAT_AMR_WB_PLUS"; case /* AUDIO_FORMAT_MP2 */ 0x18000000: return "AUDIO_FORMAT_MP2"; case /* AUDIO_FORMAT_QCELP */ 0x19000000: return "AUDIO_FORMAT_QCELP"; case /* AUDIO_FORMAT_DSD */ 0x1A000000: return "AUDIO_FORMAT_DSD"; case /* AUDIO_FORMAT_FLAC */ 0x1B000000: return "AUDIO_FORMAT_FLAC"; case /* AUDIO_FORMAT_ALAC */ 0x1C000000: return "AUDIO_FORMAT_ALAC"; case /* AUDIO_FORMAT_APE */ 0x1D000000: return "AUDIO_FORMAT_APE"; case /* AUDIO_FORMAT_AAC_ADTS */ 0x1E000000: return "AUDIO_FORMAT_AAC_ADTS"; case /* AUDIO_FORMAT_SBC */ 0x1F000000: return "AUDIO_FORMAT_SBC"; case /* AUDIO_FORMAT_APTX */ 0x20000000: return "AUDIO_FORMAT_APTX"; case /* AUDIO_FORMAT_APTX_HD */ 0x21000000: return "AUDIO_FORMAT_APTX_HD"; case /* AUDIO_FORMAT_AC4 */ 0x22000000: return "AUDIO_FORMAT_AC4"; case /* AUDIO_FORMAT_LDAC */ 0x23000000: return "AUDIO_FORMAT_LDAC"; case /* AUDIO_FORMAT_MAT */ 0x24000000: return "AUDIO_FORMAT_MAT"; case /* AUDIO_FORMAT_AAC_LATM */ 0x25000000: return "AUDIO_FORMAT_AAC_LATM"; case /* AUDIO_FORMAT_CELT */ 0x26000000: return "AUDIO_FORMAT_CELT"; case /* AUDIO_FORMAT_APTX_ADAPTIVE */ 0x27000000: return "AUDIO_FORMAT_APTX_ADAPTIVE"; case /* AUDIO_FORMAT_LHDC */ 0x28000000: return "AUDIO_FORMAT_LHDC"; case /* AUDIO_FORMAT_LHDC_LL */ 0x29000000: return "AUDIO_FORMAT_LHDC_LL"; case /* AUDIO_FORMAT_APTX_TWSP */ 0x2A000000: return "AUDIO_FORMAT_APTX_TWSP"; /* Aliases */ case /* AUDIO_FORMAT_PCM_16_BIT */ 0x1: return "AUDIO_FORMAT_PCM_16_BIT"; // (PCM | PCM_SUB_16_BIT) case /* AUDIO_FORMAT_PCM_8_BIT */ 0x2: return "AUDIO_FORMAT_PCM_8_BIT"; // (PCM | PCM_SUB_8_BIT) case /* AUDIO_FORMAT_PCM_32_BIT */ 0x3: return "AUDIO_FORMAT_PCM_32_BIT"; // (PCM | PCM_SUB_32_BIT) case /* AUDIO_FORMAT_PCM_8_24_BIT */ 0x4: return "AUDIO_FORMAT_PCM_8_24_BIT"; // (PCM | PCM_SUB_8_24_BIT) case /* AUDIO_FORMAT_PCM_FLOAT */ 0x5: return "AUDIO_FORMAT_PCM_FLOAT"; // (PCM | PCM_SUB_FLOAT) case /* AUDIO_FORMAT_PCM_24_BIT_PACKED */ 0x6: return "AUDIO_FORMAT_PCM_24_BIT_PACKED"; // (PCM | PCM_SUB_24_BIT_PACKED) case /* AUDIO_FORMAT_AAC_MAIN */ 0x4000001: return "AUDIO_FORMAT_AAC_MAIN"; // (AAC | AAC_SUB_MAIN) case /* AUDIO_FORMAT_AAC_LC */ 0x4000002: return "AUDIO_FORMAT_AAC_LC"; // (AAC | AAC_SUB_LC) case /* AUDIO_FORMAT_AAC_SSR */ 0x4000004: return "AUDIO_FORMAT_AAC_SSR"; // (AAC | AAC_SUB_SSR) case /* AUDIO_FORMAT_AAC_LTP */ 0x4000008: return "AUDIO_FORMAT_AAC_LTP"; // (AAC | AAC_SUB_LTP) case /* AUDIO_FORMAT_AAC_HE_V1 */ 0x4000010: return "AUDIO_FORMAT_AAC_HE_V1"; // (AAC | AAC_SUB_HE_V1) case /* AUDIO_FORMAT_AAC_SCALABLE */ 0x4000020: return "AUDIO_FORMAT_AAC_SCALABLE"; // (AAC | AAC_SUB_SCALABLE) case /* AUDIO_FORMAT_AAC_ERLC */ 0x4000040: return "AUDIO_FORMAT_AAC_ERLC"; // (AAC | AAC_SUB_ERLC) case /* AUDIO_FORMAT_AAC_LD */ 0x4000080: return "AUDIO_FORMAT_AAC_LD"; // (AAC | AAC_SUB_LD) case /* AUDIO_FORMAT_AAC_HE_V2 */ 0x4000100: return "AUDIO_FORMAT_AAC_HE_V2"; // (AAC | AAC_SUB_HE_V2) case /* AUDIO_FORMAT_AAC_ELD */ 0x4000200: return "AUDIO_FORMAT_AAC_ELD"; // (AAC | AAC_SUB_ELD) case /* AUDIO_FORMAT_AAC_XHE */ 0x4000300: return "AUDIO_FORMAT_AAC_XHE"; // (AAC | AAC_SUB_XHE) case /* AUDIO_FORMAT_AAC_ADTS_MAIN */ 0x1e000001: return "AUDIO_FORMAT_AAC_ADTS_MAIN"; // (AAC_ADTS | AAC_SUB_MAIN) case /* AUDIO_FORMAT_AAC_ADTS_LC */ 0x1e000002: return "AUDIO_FORMAT_AAC_ADTS_LC"; // (AAC_ADTS | AAC_SUB_LC) case /* AUDIO_FORMAT_AAC_ADTS_SSR */ 0x1e000004: return "AUDIO_FORMAT_AAC_ADTS_SSR"; // (AAC_ADTS | AAC_SUB_SSR) case /* AUDIO_FORMAT_AAC_ADTS_LTP */ 0x1e000008: return "AUDIO_FORMAT_AAC_ADTS_LTP"; // (AAC_ADTS | AAC_SUB_LTP) case /* AUDIO_FORMAT_AAC_ADTS_HE_V1 */ 0x1e000010: return "AUDIO_FORMAT_AAC_ADTS_HE_V1"; // (AAC_ADTS | AAC_SUB_HE_V1) case /* AUDIO_FORMAT_AAC_ADTS_SCALABLE */ 0x1e000020: return "AUDIO_FORMAT_AAC_ADTS_SCALABLE"; // (AAC_ADTS | AAC_SUB_SCALABLE) case /* AUDIO_FORMAT_AAC_ADTS_ERLC */ 0x1e000040: return "AUDIO_FORMAT_AAC_ADTS_ERLC"; // (AAC_ADTS | AAC_SUB_ERLC) case /* AUDIO_FORMAT_AAC_ADTS_LD */ 0x1e000080: return "AUDIO_FORMAT_AAC_ADTS_LD"; // (AAC_ADTS | AAC_SUB_LD) case /* AUDIO_FORMAT_AAC_ADTS_HE_V2 */ 0x1e000100: return "AUDIO_FORMAT_AAC_ADTS_HE_V2"; // (AAC_ADTS | AAC_SUB_HE_V2) case /* AUDIO_FORMAT_AAC_ADTS_ELD */ 0x1e000200: return "AUDIO_FORMAT_AAC_ADTS_ELD"; // (AAC_ADTS | AAC_SUB_ELD) case /* AUDIO_FORMAT_AAC_ADTS_XHE */ 0x1e000300: return "AUDIO_FORMAT_AAC_ADTS_XHE"; // (AAC_ADTS | AAC_SUB_XHE) case /* AUDIO_FORMAT_AAC_LATM_LC */ 0x25000002: return "AUDIO_FORMAT_AAC_LATM_LC"; // (AAC_LATM | AAC_SUB_LC) case /* AUDIO_FORMAT_AAC_LATM_HE_V1 */ 0x25000010: return "AUDIO_FORMAT_AAC_LATM_HE_V1"; // (AAC_LATM | AAC_SUB_HE_V1) case /* AUDIO_FORMAT_AAC_LATM_HE_V2 */ 0x25000100: return "AUDIO_FORMAT_AAC_LATM_HE_V2"; // (AAC_LATM | AAC_SUB_HE_V2) case /* AUDIO_FORMAT_E_AC3_JOC */ 0xA000001: return "AUDIO_FORMAT_E_AC3_JOC"; // (E_AC3 | E_AC3_SUB_JOC) case /* AUDIO_FORMAT_MAT_1_0 */ 0x24000001: return "AUDIO_FORMAT_MAT_1_0"; // (MAT | MAT_SUB_1_0) case /* AUDIO_FORMAT_MAT_2_0 */ 0x24000002: return "AUDIO_FORMAT_MAT_2_0"; // (MAT | MAT_SUB_2_0) case /* AUDIO_FORMAT_MAT_2_1 */ 0x24000003: return "AUDIO_FORMAT_MAT_2_1"; // (MAT | MAT_SUB_2_1) default: return "AUDIO_FORMAT_(" + audioFormat + ")"; } } /* Routing bits for the former setRouting/getRouting API */ /** @hide @deprecated */ @Deprecated public static final int ROUTE_EARPIECE = (1 << 0); Loading media/java/android/media/MediaMetrics.java +111 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,117 @@ import java.util.Objects; public class MediaMetrics { public static final String TAG = "MediaMetrics"; public static final String SEPARATOR = "."; /** * A list of established MediaMetrics names that can be used for Items. */ public static class Name { public static final String AUDIO = "audio"; public static final String AUDIO_BLUETOOTH = AUDIO + SEPARATOR + "bluetooth"; public static final String AUDIO_DEVICE = AUDIO + SEPARATOR + "device"; public static final String AUDIO_FOCUS = AUDIO + SEPARATOR + "focus"; public static final String AUDIO_FORCE_USE = AUDIO + SEPARATOR + "forceUse"; public static final String AUDIO_MIC = AUDIO + SEPARATOR + "mic"; public static final String AUDIO_SERVICE = AUDIO + SEPARATOR + "service"; public static final String AUDIO_VOLUME = AUDIO + SEPARATOR + "volume"; public static final String AUDIO_VOLUME_EVENT = AUDIO_VOLUME + SEPARATOR + "event"; } /** * A list of established string values. */ public static class Value { public static final String CONNECT = "connect"; public static final String CONNECTED = "connected"; public static final String DISCONNECT = "disconnect"; public static final String DISCONNECTED = "disconnected"; public static final String DOWN = "down"; public static final String MUTE = "mute"; public static final String NO = "no"; public static final String OFF = "off"; public static final String ON = "on"; public static final String UNMUTE = "unmute"; public static final String UP = "up"; public static final String YES = "yes"; } /** * A list of standard property keys for consistent use and type. */ public static class Property { // A use for Bluetooth or USB device addresses public static final Key<String> ADDRESS = createKey("address", String.class); // A string representing the Audio Attributes public static final Key<String> ATTRIBUTES = createKey("attributes", String.class); // The calling package responsible for the state change public static final Key<String> CALLING_PACKAGE = createKey("callingPackage", String.class); // The client name public static final Key<String> CLIENT_NAME = createKey("clientName", String.class); // The device type public static final Key<Integer> DELAY_MS = createKey("delayMs", Integer.class); // The device type public static final Key<String> DEVICE = createKey("device", String.class); // For volume changes, up or down public static final Key<String> DIRECTION = createKey("direction", String.class); // A reason for early return or error public static final Key<String> EARLY_RETURN = createKey("earlyReturn", String.class); // ENCODING_ ... string to match AudioFormat encoding public static final Key<String> ENCODING = createKey("encoding", String.class); public static final Key<String> EVENT = createKey("event#", String.class); // event generated is external (yes, no) public static final Key<String> EXTERNAL = createKey("external", String.class); public static final Key<Integer> FLAGS = createKey("flags", Integer.class); public static final Key<String> FOCUS_CHANGE_HINT = createKey("focusChangeHint", String.class); public static final Key<String> FORCE_USE_DUE_TO = createKey("forceUseDueTo", String.class); public static final Key<String> FORCE_USE_MODE = createKey("forceUseMode", String.class); public static final Key<Double> GAIN_DB = createKey("gainDb", Double.class); public static final Key<String> GROUP = createKey("group", String.class); // For volume public static final Key<Integer> INDEX = createKey("index", Integer.class); public static final Key<Integer> MAX_INDEX = createKey("maxIndex", Integer.class); public static final Key<Integer> MIN_INDEX = createKey("minIndex", Integer.class); public static final Key<String> MODE = createKey("mode", String.class); // audio_mode public static final Key<String> MUTE = createKey("mute", String.class); // microphone, on or off. // Bluetooth or Usb device name public static final Key<String> NAME = createKey("name", String.class); // Number of observers public static final Key<Integer> OBSERVERS = createKey("observers", Integer.class); public static final Key<String> REQUEST = createKey("request", String.class); // For Bluetooth public static final Key<String> SCO_AUDIO_MODE = createKey("scoAudioMode", String.class); public static final Key<Integer> SDK = createKey("sdk", Integer.class); public static final Key<String> STATE = createKey("state", String.class); public static final Key<Integer> STATUS = createKey("status", Integer.class); public static final Key<String> STREAM_TYPE = createKey("streamType", String.class); } /** * The TYPE constants below should match those in native MediaMetricsItem.h */ Loading services/core/java/com/android/server/audio/AudioDeviceBroker.java +8 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.media.AudioRoutesInfo; import android.media.AudioSystem; import android.media.IAudioRoutesObserver; import android.media.IStrategyPreferredDeviceDispatcher; import android.media.MediaMetrics; import android.os.Binder; import android.os.Handler; import android.os.IBinder; Loading Loading @@ -668,6 +669,13 @@ import java.io.PrintWriter; } AudioService.sForceUseLogger.log( new AudioServiceEvents.ForceUseEvent(useCase, config, eventSource)); new MediaMetrics.Item(MediaMetrics.Name.AUDIO_FORCE_USE + MediaMetrics.SEPARATOR + AudioSystem.forceUseUsageToString(useCase)) .set(MediaMetrics.Property.EVENT, "onSetForceUse") .set(MediaMetrics.Property.FORCE_USE_DUE_TO, eventSource) .set(MediaMetrics.Property.FORCE_USE_MODE, AudioSystem.forceUseConfigToString(config)) .record(); AudioSystem.setForceUse(useCase, config); } Loading services/core/java/com/android/server/audio/AudioDeviceInventory.java +165 −90 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
media/java/android/media/AudioManager.java +26 −0 Original line number Diff line number Diff line Loading @@ -2712,6 +2712,32 @@ public class AudioManager { } } /** * @hide */ public static String audioFocusToString(int focus) { switch (focus) { case AUDIOFOCUS_NONE: return "AUDIOFOCUS_NONE"; case AUDIOFOCUS_GAIN: return "AUDIOFOCUS_GAIN"; case AUDIOFOCUS_GAIN_TRANSIENT: return "AUDIOFOCUS_GAIN_TRANSIENT"; case AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK: return "AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK"; case AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE: return "AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE"; case AUDIOFOCUS_LOSS: return "AUDIOFOCUS_LOSS"; case AUDIOFOCUS_LOSS_TRANSIENT: return "AUDIOFOCUS_LOSS_TRANSIENT"; case AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: // Note CAN_DUCK not MAY_DUCK. return "AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK"; default: return "AUDIO_FOCUS_UNKNOWN(" + focus + ")"; } } /** * Used to indicate no audio focus has been gained or lost, or requested. */ Loading
media/java/android/media/AudioSystem.java +169 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,175 @@ public class AudioSystem } } /** * @hide * Convert a native audio format integer constant to a string. */ public static String audioFormatToString(int audioFormat) { switch (audioFormat) { case /* AUDIO_FORMAT_INVALID */ 0xFFFFFFFF: return "AUDIO_FORMAT_INVALID"; case /* AUDIO_FORMAT_DEFAULT */ 0: return "AUDIO_FORMAT_DEFAULT"; case /* AUDIO_FORMAT_MP3 */ 0x01000000: return "AUDIO_FORMAT_MP3"; case /* AUDIO_FORMAT_AMR_NB */ 0x02000000: return "AUDIO_FORMAT_AMR_NB"; case /* AUDIO_FORMAT_AMR_WB */ 0x03000000: return "AUDIO_FORMAT_AMR_WB"; case /* AUDIO_FORMAT_AAC */ 0x04000000: return "AUDIO_FORMAT_AAC"; case /* AUDIO_FORMAT_HE_AAC_V1 */ 0x05000000: return "AUDIO_FORMAT_HE_AAC_V1"; case /* AUDIO_FORMAT_HE_AAC_V2 */ 0x06000000: return "AUDIO_FORMAT_HE_AAC_V2"; case /* AUDIO_FORMAT_VORBIS */ 0x07000000: return "AUDIO_FORMAT_VORBIS"; case /* AUDIO_FORMAT_OPUS */ 0x08000000: return "AUDIO_FORMAT_OPUS"; case /* AUDIO_FORMAT_AC3 */ 0x09000000: return "AUDIO_FORMAT_AC3"; case /* AUDIO_FORMAT_E_AC3 */ 0x0A000000: return "AUDIO_FORMAT_E_AC3"; case /* AUDIO_FORMAT_DTS */ 0x0B000000: return "AUDIO_FORMAT_DTS"; case /* AUDIO_FORMAT_DTS_HD */ 0x0C000000: return "AUDIO_FORMAT_DTS_HD"; case /* AUDIO_FORMAT_IEC61937 */ 0x0D000000: return "AUDIO_FORMAT_IEC61937"; case /* AUDIO_FORMAT_DOLBY_TRUEHD */ 0x0E000000: return "AUDIO_FORMAT_DOLBY_TRUEHD"; case /* AUDIO_FORMAT_EVRC */ 0x10000000: return "AUDIO_FORMAT_EVRC"; case /* AUDIO_FORMAT_EVRCB */ 0x11000000: return "AUDIO_FORMAT_EVRCB"; case /* AUDIO_FORMAT_EVRCWB */ 0x12000000: return "AUDIO_FORMAT_EVRCWB"; case /* AUDIO_FORMAT_EVRCNW */ 0x13000000: return "AUDIO_FORMAT_EVRCNW"; case /* AUDIO_FORMAT_AAC_ADIF */ 0x14000000: return "AUDIO_FORMAT_AAC_ADIF"; case /* AUDIO_FORMAT_WMA */ 0x15000000: return "AUDIO_FORMAT_WMA"; case /* AUDIO_FORMAT_WMA_PRO */ 0x16000000: return "AUDIO_FORMAT_WMA_PRO"; case /* AUDIO_FORMAT_AMR_WB_PLUS */ 0x17000000: return "AUDIO_FORMAT_AMR_WB_PLUS"; case /* AUDIO_FORMAT_MP2 */ 0x18000000: return "AUDIO_FORMAT_MP2"; case /* AUDIO_FORMAT_QCELP */ 0x19000000: return "AUDIO_FORMAT_QCELP"; case /* AUDIO_FORMAT_DSD */ 0x1A000000: return "AUDIO_FORMAT_DSD"; case /* AUDIO_FORMAT_FLAC */ 0x1B000000: return "AUDIO_FORMAT_FLAC"; case /* AUDIO_FORMAT_ALAC */ 0x1C000000: return "AUDIO_FORMAT_ALAC"; case /* AUDIO_FORMAT_APE */ 0x1D000000: return "AUDIO_FORMAT_APE"; case /* AUDIO_FORMAT_AAC_ADTS */ 0x1E000000: return "AUDIO_FORMAT_AAC_ADTS"; case /* AUDIO_FORMAT_SBC */ 0x1F000000: return "AUDIO_FORMAT_SBC"; case /* AUDIO_FORMAT_APTX */ 0x20000000: return "AUDIO_FORMAT_APTX"; case /* AUDIO_FORMAT_APTX_HD */ 0x21000000: return "AUDIO_FORMAT_APTX_HD"; case /* AUDIO_FORMAT_AC4 */ 0x22000000: return "AUDIO_FORMAT_AC4"; case /* AUDIO_FORMAT_LDAC */ 0x23000000: return "AUDIO_FORMAT_LDAC"; case /* AUDIO_FORMAT_MAT */ 0x24000000: return "AUDIO_FORMAT_MAT"; case /* AUDIO_FORMAT_AAC_LATM */ 0x25000000: return "AUDIO_FORMAT_AAC_LATM"; case /* AUDIO_FORMAT_CELT */ 0x26000000: return "AUDIO_FORMAT_CELT"; case /* AUDIO_FORMAT_APTX_ADAPTIVE */ 0x27000000: return "AUDIO_FORMAT_APTX_ADAPTIVE"; case /* AUDIO_FORMAT_LHDC */ 0x28000000: return "AUDIO_FORMAT_LHDC"; case /* AUDIO_FORMAT_LHDC_LL */ 0x29000000: return "AUDIO_FORMAT_LHDC_LL"; case /* AUDIO_FORMAT_APTX_TWSP */ 0x2A000000: return "AUDIO_FORMAT_APTX_TWSP"; /* Aliases */ case /* AUDIO_FORMAT_PCM_16_BIT */ 0x1: return "AUDIO_FORMAT_PCM_16_BIT"; // (PCM | PCM_SUB_16_BIT) case /* AUDIO_FORMAT_PCM_8_BIT */ 0x2: return "AUDIO_FORMAT_PCM_8_BIT"; // (PCM | PCM_SUB_8_BIT) case /* AUDIO_FORMAT_PCM_32_BIT */ 0x3: return "AUDIO_FORMAT_PCM_32_BIT"; // (PCM | PCM_SUB_32_BIT) case /* AUDIO_FORMAT_PCM_8_24_BIT */ 0x4: return "AUDIO_FORMAT_PCM_8_24_BIT"; // (PCM | PCM_SUB_8_24_BIT) case /* AUDIO_FORMAT_PCM_FLOAT */ 0x5: return "AUDIO_FORMAT_PCM_FLOAT"; // (PCM | PCM_SUB_FLOAT) case /* AUDIO_FORMAT_PCM_24_BIT_PACKED */ 0x6: return "AUDIO_FORMAT_PCM_24_BIT_PACKED"; // (PCM | PCM_SUB_24_BIT_PACKED) case /* AUDIO_FORMAT_AAC_MAIN */ 0x4000001: return "AUDIO_FORMAT_AAC_MAIN"; // (AAC | AAC_SUB_MAIN) case /* AUDIO_FORMAT_AAC_LC */ 0x4000002: return "AUDIO_FORMAT_AAC_LC"; // (AAC | AAC_SUB_LC) case /* AUDIO_FORMAT_AAC_SSR */ 0x4000004: return "AUDIO_FORMAT_AAC_SSR"; // (AAC | AAC_SUB_SSR) case /* AUDIO_FORMAT_AAC_LTP */ 0x4000008: return "AUDIO_FORMAT_AAC_LTP"; // (AAC | AAC_SUB_LTP) case /* AUDIO_FORMAT_AAC_HE_V1 */ 0x4000010: return "AUDIO_FORMAT_AAC_HE_V1"; // (AAC | AAC_SUB_HE_V1) case /* AUDIO_FORMAT_AAC_SCALABLE */ 0x4000020: return "AUDIO_FORMAT_AAC_SCALABLE"; // (AAC | AAC_SUB_SCALABLE) case /* AUDIO_FORMAT_AAC_ERLC */ 0x4000040: return "AUDIO_FORMAT_AAC_ERLC"; // (AAC | AAC_SUB_ERLC) case /* AUDIO_FORMAT_AAC_LD */ 0x4000080: return "AUDIO_FORMAT_AAC_LD"; // (AAC | AAC_SUB_LD) case /* AUDIO_FORMAT_AAC_HE_V2 */ 0x4000100: return "AUDIO_FORMAT_AAC_HE_V2"; // (AAC | AAC_SUB_HE_V2) case /* AUDIO_FORMAT_AAC_ELD */ 0x4000200: return "AUDIO_FORMAT_AAC_ELD"; // (AAC | AAC_SUB_ELD) case /* AUDIO_FORMAT_AAC_XHE */ 0x4000300: return "AUDIO_FORMAT_AAC_XHE"; // (AAC | AAC_SUB_XHE) case /* AUDIO_FORMAT_AAC_ADTS_MAIN */ 0x1e000001: return "AUDIO_FORMAT_AAC_ADTS_MAIN"; // (AAC_ADTS | AAC_SUB_MAIN) case /* AUDIO_FORMAT_AAC_ADTS_LC */ 0x1e000002: return "AUDIO_FORMAT_AAC_ADTS_LC"; // (AAC_ADTS | AAC_SUB_LC) case /* AUDIO_FORMAT_AAC_ADTS_SSR */ 0x1e000004: return "AUDIO_FORMAT_AAC_ADTS_SSR"; // (AAC_ADTS | AAC_SUB_SSR) case /* AUDIO_FORMAT_AAC_ADTS_LTP */ 0x1e000008: return "AUDIO_FORMAT_AAC_ADTS_LTP"; // (AAC_ADTS | AAC_SUB_LTP) case /* AUDIO_FORMAT_AAC_ADTS_HE_V1 */ 0x1e000010: return "AUDIO_FORMAT_AAC_ADTS_HE_V1"; // (AAC_ADTS | AAC_SUB_HE_V1) case /* AUDIO_FORMAT_AAC_ADTS_SCALABLE */ 0x1e000020: return "AUDIO_FORMAT_AAC_ADTS_SCALABLE"; // (AAC_ADTS | AAC_SUB_SCALABLE) case /* AUDIO_FORMAT_AAC_ADTS_ERLC */ 0x1e000040: return "AUDIO_FORMAT_AAC_ADTS_ERLC"; // (AAC_ADTS | AAC_SUB_ERLC) case /* AUDIO_FORMAT_AAC_ADTS_LD */ 0x1e000080: return "AUDIO_FORMAT_AAC_ADTS_LD"; // (AAC_ADTS | AAC_SUB_LD) case /* AUDIO_FORMAT_AAC_ADTS_HE_V2 */ 0x1e000100: return "AUDIO_FORMAT_AAC_ADTS_HE_V2"; // (AAC_ADTS | AAC_SUB_HE_V2) case /* AUDIO_FORMAT_AAC_ADTS_ELD */ 0x1e000200: return "AUDIO_FORMAT_AAC_ADTS_ELD"; // (AAC_ADTS | AAC_SUB_ELD) case /* AUDIO_FORMAT_AAC_ADTS_XHE */ 0x1e000300: return "AUDIO_FORMAT_AAC_ADTS_XHE"; // (AAC_ADTS | AAC_SUB_XHE) case /* AUDIO_FORMAT_AAC_LATM_LC */ 0x25000002: return "AUDIO_FORMAT_AAC_LATM_LC"; // (AAC_LATM | AAC_SUB_LC) case /* AUDIO_FORMAT_AAC_LATM_HE_V1 */ 0x25000010: return "AUDIO_FORMAT_AAC_LATM_HE_V1"; // (AAC_LATM | AAC_SUB_HE_V1) case /* AUDIO_FORMAT_AAC_LATM_HE_V2 */ 0x25000100: return "AUDIO_FORMAT_AAC_LATM_HE_V2"; // (AAC_LATM | AAC_SUB_HE_V2) case /* AUDIO_FORMAT_E_AC3_JOC */ 0xA000001: return "AUDIO_FORMAT_E_AC3_JOC"; // (E_AC3 | E_AC3_SUB_JOC) case /* AUDIO_FORMAT_MAT_1_0 */ 0x24000001: return "AUDIO_FORMAT_MAT_1_0"; // (MAT | MAT_SUB_1_0) case /* AUDIO_FORMAT_MAT_2_0 */ 0x24000002: return "AUDIO_FORMAT_MAT_2_0"; // (MAT | MAT_SUB_2_0) case /* AUDIO_FORMAT_MAT_2_1 */ 0x24000003: return "AUDIO_FORMAT_MAT_2_1"; // (MAT | MAT_SUB_2_1) default: return "AUDIO_FORMAT_(" + audioFormat + ")"; } } /* Routing bits for the former setRouting/getRouting API */ /** @hide @deprecated */ @Deprecated public static final int ROUTE_EARPIECE = (1 << 0); Loading
media/java/android/media/MediaMetrics.java +111 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,117 @@ import java.util.Objects; public class MediaMetrics { public static final String TAG = "MediaMetrics"; public static final String SEPARATOR = "."; /** * A list of established MediaMetrics names that can be used for Items. */ public static class Name { public static final String AUDIO = "audio"; public static final String AUDIO_BLUETOOTH = AUDIO + SEPARATOR + "bluetooth"; public static final String AUDIO_DEVICE = AUDIO + SEPARATOR + "device"; public static final String AUDIO_FOCUS = AUDIO + SEPARATOR + "focus"; public static final String AUDIO_FORCE_USE = AUDIO + SEPARATOR + "forceUse"; public static final String AUDIO_MIC = AUDIO + SEPARATOR + "mic"; public static final String AUDIO_SERVICE = AUDIO + SEPARATOR + "service"; public static final String AUDIO_VOLUME = AUDIO + SEPARATOR + "volume"; public static final String AUDIO_VOLUME_EVENT = AUDIO_VOLUME + SEPARATOR + "event"; } /** * A list of established string values. */ public static class Value { public static final String CONNECT = "connect"; public static final String CONNECTED = "connected"; public static final String DISCONNECT = "disconnect"; public static final String DISCONNECTED = "disconnected"; public static final String DOWN = "down"; public static final String MUTE = "mute"; public static final String NO = "no"; public static final String OFF = "off"; public static final String ON = "on"; public static final String UNMUTE = "unmute"; public static final String UP = "up"; public static final String YES = "yes"; } /** * A list of standard property keys for consistent use and type. */ public static class Property { // A use for Bluetooth or USB device addresses public static final Key<String> ADDRESS = createKey("address", String.class); // A string representing the Audio Attributes public static final Key<String> ATTRIBUTES = createKey("attributes", String.class); // The calling package responsible for the state change public static final Key<String> CALLING_PACKAGE = createKey("callingPackage", String.class); // The client name public static final Key<String> CLIENT_NAME = createKey("clientName", String.class); // The device type public static final Key<Integer> DELAY_MS = createKey("delayMs", Integer.class); // The device type public static final Key<String> DEVICE = createKey("device", String.class); // For volume changes, up or down public static final Key<String> DIRECTION = createKey("direction", String.class); // A reason for early return or error public static final Key<String> EARLY_RETURN = createKey("earlyReturn", String.class); // ENCODING_ ... string to match AudioFormat encoding public static final Key<String> ENCODING = createKey("encoding", String.class); public static final Key<String> EVENT = createKey("event#", String.class); // event generated is external (yes, no) public static final Key<String> EXTERNAL = createKey("external", String.class); public static final Key<Integer> FLAGS = createKey("flags", Integer.class); public static final Key<String> FOCUS_CHANGE_HINT = createKey("focusChangeHint", String.class); public static final Key<String> FORCE_USE_DUE_TO = createKey("forceUseDueTo", String.class); public static final Key<String> FORCE_USE_MODE = createKey("forceUseMode", String.class); public static final Key<Double> GAIN_DB = createKey("gainDb", Double.class); public static final Key<String> GROUP = createKey("group", String.class); // For volume public static final Key<Integer> INDEX = createKey("index", Integer.class); public static final Key<Integer> MAX_INDEX = createKey("maxIndex", Integer.class); public static final Key<Integer> MIN_INDEX = createKey("minIndex", Integer.class); public static final Key<String> MODE = createKey("mode", String.class); // audio_mode public static final Key<String> MUTE = createKey("mute", String.class); // microphone, on or off. // Bluetooth or Usb device name public static final Key<String> NAME = createKey("name", String.class); // Number of observers public static final Key<Integer> OBSERVERS = createKey("observers", Integer.class); public static final Key<String> REQUEST = createKey("request", String.class); // For Bluetooth public static final Key<String> SCO_AUDIO_MODE = createKey("scoAudioMode", String.class); public static final Key<Integer> SDK = createKey("sdk", Integer.class); public static final Key<String> STATE = createKey("state", String.class); public static final Key<Integer> STATUS = createKey("status", Integer.class); public static final Key<String> STREAM_TYPE = createKey("streamType", String.class); } /** * The TYPE constants below should match those in native MediaMetricsItem.h */ Loading
services/core/java/com/android/server/audio/AudioDeviceBroker.java +8 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.media.AudioRoutesInfo; import android.media.AudioSystem; import android.media.IAudioRoutesObserver; import android.media.IStrategyPreferredDeviceDispatcher; import android.media.MediaMetrics; import android.os.Binder; import android.os.Handler; import android.os.IBinder; Loading Loading @@ -668,6 +669,13 @@ import java.io.PrintWriter; } AudioService.sForceUseLogger.log( new AudioServiceEvents.ForceUseEvent(useCase, config, eventSource)); new MediaMetrics.Item(MediaMetrics.Name.AUDIO_FORCE_USE + MediaMetrics.SEPARATOR + AudioSystem.forceUseUsageToString(useCase)) .set(MediaMetrics.Property.EVENT, "onSetForceUse") .set(MediaMetrics.Property.FORCE_USE_DUE_TO, eventSource) .set(MediaMetrics.Property.FORCE_USE_MODE, AudioSystem.forceUseConfigToString(config)) .record(); AudioSystem.setForceUse(useCase, config); } Loading
services/core/java/com/android/server/audio/AudioDeviceInventory.java +165 −90 File changed.Preview size limit exceeded, changes collapsed. Show changes