From 88205a34e840fdd3ed043eca64775366332c28c2 Mon Sep 17 00:00:00 2001 From: Andy Hung Date: Wed, 17 Feb 2021 15:06:18 -0800 Subject: MediaMetrics: Add LogSessionId Test: AudioTrackTest#setLogSessionId and mediametrics dumpsys Bug: 180543764 Change-Id: I759702444bd7588d9d91c9c4638689c4c88e073f --- core/jni/android_media_AudioTrack.cpp | 14 ++++++++++++++ media/java/android/media/AudioTrack.java | 23 +++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp index ad9a547bc332..da60a75ba900 100644 --- a/core/jni/android_media_AudioTrack.cpp +++ b/core/jni/android_media_AudioTrack.cpp @@ -1419,6 +1419,18 @@ static jint android_media_AudioTrack_getDualMonoMode(JNIEnv *env, jobject thiz, return nativeToJavaStatus(status); } +static void android_media_AudioTrack_setLogSessionId(JNIEnv *env, jobject thiz, + jstring jlogSessionId) { + sp track = getAudioTrack(env, thiz); + if (track == nullptr) { + jniThrowException(env, "java/lang/IllegalStateException", + "Unable to retrieve AudioTrack pointer for setLogSessionId()"); + } + ScopedUtfChars logSessionId(env, jlogSessionId); + ALOGV("%s: logSessionId %s", __func__, logSessionId.c_str()); + track->setLogSessionId(logSessionId.c_str()); +} + static void android_media_AudioTrack_setPlayerIId(JNIEnv *env, jobject thiz, jint playerIId) { sp track = getAudioTrack(env, thiz); if (track == nullptr) { @@ -1506,6 +1518,8 @@ static const JNINativeMethod gMethods[] = { (void *)android_media_AudioTrack_getAudioDescriptionMixLeveldB}, {"native_set_dual_mono_mode", "(I)I", (void *)android_media_AudioTrack_setDualMonoMode}, {"native_get_dual_mono_mode", "([I)I", (void *)android_media_AudioTrack_getDualMonoMode}, + {"native_setLogSessionId", "(Ljava/lang/String;)V", + (void *)android_media_AudioTrack_setLogSessionId}, {"native_setPlayerIId", "(I)V", (void *)android_media_AudioTrack_setPlayerIId}, }; diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index 7e7a71b723cb..d61e0e75bbd5 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -565,6 +565,11 @@ public class AudioTrack extends PlayerBase */ private int mOffloadPaddingFrames = 0; + /** + * The log session id used for metrics. + */ + private String mLogSessionId; + //-------------------------------- // Used exclusively by native code //-------------------- @@ -3966,6 +3971,23 @@ public class AudioTrack extends PlayerBase } } + /** + * Sets a string handle to this AudioTrack for metrics collection. + * + * @param logSessionId a string which is used to identify this object + * to the metrics service. + * @throws IllegalStateException if AudioTrack not initialized. + * + * @hide + */ + public void setLogSessionId(@NonNull String logSessionId) { + if (mState == STATE_UNINITIALIZED) { + throw new IllegalStateException("track not initialized"); + } + native_setLogSessionId(logSessionId); + mLogSessionId = logSessionId; + } + //--------------------------------------------------------- // Inner classes //-------------------- @@ -4201,6 +4223,7 @@ public class AudioTrack extends PlayerBase private native int native_get_audio_description_mix_level_db(float[] level); private native int native_set_dual_mono_mode(int dualMonoMode); private native int native_get_dual_mono_mode(int[] dualMonoMode); + private native void native_setLogSessionId(@NonNull String logSessionId); /** * Sets the audio service Player Interface Id. -- cgit v1.2.3-59-g8ed1b