From f40041458e1cbd6b428e586fe99d22f37673f90b Mon Sep 17 00:00:00 2001 From: jiabin Date: Wed, 16 Dec 2020 11:10:11 -0800 Subject: [PATCH] Add package name when initializing ToneGenerator. Bug: 175595599 Test: ToneGeneratorTest Change-Id: Iab250564b3af6901f08775f279ba88b1b0eade19 --- core/jni/android_media_ToneGenerator.cpp | 27 ++++++++++++--------- media/java/android/media/ToneGenerator.java | 13 +++++++--- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/core/jni/android_media_ToneGenerator.cpp b/core/jni/android_media_ToneGenerator.cpp index ecb3cd60c42f0..82611eedd31af 100644 --- a/core/jni/android_media_ToneGenerator.cpp +++ b/core/jni/android_media_ToneGenerator.cpp @@ -23,6 +23,7 @@ #include #include +#include #include "core_jni_helpers.h" #include @@ -85,9 +86,12 @@ static void android_media_ToneGenerator_release(JNIEnv *env, jobject thiz) { delete lpToneGen; } -static void android_media_ToneGenerator_native_setup(JNIEnv *env, jobject thiz, - jint streamType, jint volume) { - ToneGenerator *lpToneGen = new ToneGenerator((audio_stream_type_t) streamType, AudioSystem::linearToLog(volume), true); +static void android_media_ToneGenerator_native_setup(JNIEnv *env, jobject thiz, jint streamType, + jint volume, jstring opPackageName) { + ScopedUtfChars opPackageNameStr(env, opPackageName); + ToneGenerator *lpToneGen = + new ToneGenerator((audio_stream_type_t)streamType, AudioSystem::linearToLog(volume), + true /*threadCanCallJava*/, opPackageNameStr.c_str()); env->SetLongField(thiz, fields.context, 0); @@ -123,15 +127,14 @@ static void android_media_ToneGenerator_native_finalize(JNIEnv *env, // ---------------------------------------------------------------------------- -static const JNINativeMethod gMethods[] = { - { "startTone", "(II)Z", (void *)android_media_ToneGenerator_startTone }, - { "stopTone", "()V", (void *)android_media_ToneGenerator_stopTone }, - { "getAudioSessionId", "()I", (void *)android_media_ToneGenerator_getAudioSessionId}, - { "release", "()V", (void *)android_media_ToneGenerator_release }, - { "native_setup", "(II)V", (void *)android_media_ToneGenerator_native_setup }, - { "native_finalize", "()V", (void *)android_media_ToneGenerator_native_finalize } -}; - +static const JNINativeMethod gMethods[] = + {{"startTone", "(II)Z", (void *)android_media_ToneGenerator_startTone}, + {"stopTone", "()V", (void *)android_media_ToneGenerator_stopTone}, + {"getAudioSessionId", "()I", (void *)android_media_ToneGenerator_getAudioSessionId}, + {"release", "()V", (void *)android_media_ToneGenerator_release}, + {"native_setup", "(IILjava/lang/String;)V", + (void *)android_media_ToneGenerator_native_setup}, + {"native_finalize", "()V", (void *)android_media_ToneGenerator_native_finalize}}; int register_android_media_ToneGenerator(JNIEnv *env) { jclass clazz = FindClassOrDie(env, "android/media/ToneGenerator"); diff --git a/media/java/android/media/ToneGenerator.java b/media/java/android/media/ToneGenerator.java index 140e70d32c780..6a695e6ca075b 100644 --- a/media/java/android/media/ToneGenerator.java +++ b/media/java/android/media/ToneGenerator.java @@ -16,9 +16,11 @@ package android.media; +import android.annotation.NonNull; +import android.app.ActivityThread; import android.compat.annotation.UnsupportedAppUsage; import android.os.Build; - +import android.text.TextUtils; /** @@ -746,7 +748,7 @@ public class ToneGenerator * */ public ToneGenerator(int streamType, int volume) { - native_setup(streamType, volume); + native_setup(streamType, volume, getCurrentOpPackageName()); } /** @@ -880,7 +882,8 @@ public class ToneGenerator */ public native void release(); - private native final void native_setup(int streamType, int volume); + private native void native_setup( + int streamType, int volume, @NonNull String opPackageName); private native final void native_finalize(); @@ -895,6 +898,10 @@ public class ToneGenerator @Override protected void finalize() { native_finalize(); } + private String getCurrentOpPackageName() { + return TextUtils.emptyIfNull(ActivityThread.currentOpPackageName()); + } + @SuppressWarnings("unused") @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private long mNativeContext; // accessed by native methods