Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d5625c5 authored by Andy Hung's avatar Andy Hung Committed by Android (Google) Code Review
Browse files

Merge changes Ibca1d27b,I8cc6f5ce into rvc-dev

* changes:
  MediaMetrics: Update Audio Java logging
  MediaMetrics instrumentation
parents 59fcab20 69836959
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -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.
     */
+169 −0
Original line number Diff line number Diff line
@@ -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);
+111 −0
Original line number Diff line number Diff line
@@ -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
     */
+8 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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);
    }

+180 −4

File changed.

Preview size limit exceeded, changes collapsed.

Loading