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

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

Merge "MediaMetrics: Add MediaMetrics Java interface"

parents 344c5447 f2310c70
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -129,6 +129,7 @@ extern int register_android_database_CursorWindow(JNIEnv* env);
extern int register_android_database_SQLiteConnection(JNIEnv* env);
extern int register_android_database_SQLiteConnection(JNIEnv* env);
extern int register_android_database_SQLiteGlobal(JNIEnv* env);
extern int register_android_database_SQLiteGlobal(JNIEnv* env);
extern int register_android_database_SQLiteDebug(JNIEnv* env);
extern int register_android_database_SQLiteDebug(JNIEnv* env);
extern int register_android_media_MediaMetrics(JNIEnv *env);
extern int register_android_os_Debug(JNIEnv* env);
extern int register_android_os_Debug(JNIEnv* env);
extern int register_android_os_GraphicsEnvironment(JNIEnv* env);
extern int register_android_os_GraphicsEnvironment(JNIEnv* env);
extern int register_android_os_HidlSupport(JNIEnv* env);
extern int register_android_os_HidlSupport(JNIEnv* env);
@@ -1520,6 +1521,7 @@ static const RegJNIRec gRegJNI[] = {
    REG_JNI(register_android_media_AudioProductStrategies),
    REG_JNI(register_android_media_AudioProductStrategies),
    REG_JNI(register_android_media_AudioVolumeGroups),
    REG_JNI(register_android_media_AudioVolumeGroups),
    REG_JNI(register_android_media_AudioVolumeGroupChangeHandler),
    REG_JNI(register_android_media_AudioVolumeGroupChangeHandler),
    REG_JNI(register_android_media_MediaMetrics),
    REG_JNI(register_android_media_MicrophoneInfo),
    REG_JNI(register_android_media_MicrophoneInfo),
    REG_JNI(register_android_media_RemoteDisplay),
    REG_JNI(register_android_media_RemoteDisplay),
    REG_JNI(register_android_media_ToneGenerator),
    REG_JNI(register_android_media_ToneGenerator),
+634 −0

File added.

Preview size limit exceeded, changes collapsed.

+37 −1
Original line number Original line Diff line number Diff line
@@ -23,6 +23,7 @@


#include "android_media_MediaMetricsJNI.h"
#include "android_media_MediaMetricsJNI.h"
#include "android_os_Parcel.h"
#include "android_os_Parcel.h"
#include "android_runtime/AndroidRuntime.h"


// This source file is compiled and linked into:
// This source file is compiled and linked into:
// core/jni/ (libandroid_runtime.so)
// core/jni/ (libandroid_runtime.so)
@@ -124,6 +125,28 @@ jobject MediaMetricsJNI::writeMetricsToBundle(
    return bh.bundle;
    return bh.bundle;
}
}


// Implementation of MediaMetrics.native_submit_bytebuffer(),
// Delivers the byte buffer to the mediametrics service.
static jint android_media_MediaMetrics_submit_bytebuffer(
        JNIEnv* env, jobject thiz, jobject byteBuffer, jint length)
{
    const jbyte* buffer =
            reinterpret_cast<const jbyte*>(env->GetDirectBufferAddress(byteBuffer));
    if (buffer == nullptr) {
        ALOGE("Error retrieving source of audio data to play, can't play");
        return (jint)BAD_VALUE;
    }

    // TODO: directly record item to MediaMetrics service.
    mediametrics::Item item;
    if (item.readFromByteString((char *)buffer, length) != NO_ERROR) {
        ALOGW("%s: cannot read from byte string", __func__);
        return (jint)BAD_VALUE;
    }
    item.selfrecord();
    return (jint)NO_ERROR;
}

// Helper function to convert a native PersistableBundle to a Java
// Helper function to convert a native PersistableBundle to a Java
// PersistableBundle.
// PersistableBundle.
jobject MediaMetricsJNI::nativeToJavaPersistableBundle(JNIEnv *env,
jobject MediaMetricsJNI::nativeToJavaPersistableBundle(JNIEnv *env,
@@ -191,5 +214,18 @@ jobject MediaMetricsJNI::nativeToJavaPersistableBundle(JNIEnv *env,
    return newBundle;
    return newBundle;
}
}


};  // namespace android
// ----------------------------------------------------------------------------


static constexpr JNINativeMethod gMethods[] = {
    {"native_submit_bytebuffer", "(Ljava/nio/ByteBuffer;I)I",
            (void *)android_media_MediaMetrics_submit_bytebuffer},
};

// Registers the native methods, called from core/jni/AndroidRuntime.cpp
int register_android_media_MediaMetrics(JNIEnv *env)
{
    return AndroidRuntime::registerNativeMethods(
            env, "android/media/MediaMetrics", gMethods, std::size(gMethods));
}

};  // namespace android