From fdd15ef63760371f252e3bddee6c3882001d4b99 Mon Sep 17 00:00:00 2001 From: Francois Gaffie Date: Wed, 13 Oct 2021 13:01:27 +0200 Subject: [PATCH] [BUG] AudioService: fix stategy/groups attributes introspection Strategies/volume groups are based on attributes to be identified. Some strategies/groups rely only on AudioAttributes flags to be identified (e.g. BLUETOOTH SCO). AudioAttributes#Builder#setFlags has been enforced to prevent from public API setting non public flags. However, from JNI introspection API, it is required to be able to set all flags. This CL fixes this by using replaceFlags API in AudioAttributes. Signed-off-by: Francois Gaffie Change-Id: I8492e8ddcb8eb0d03bbb2a539a631694b3f64196 --- core/jni/android_media_AudioAttributes.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/jni/android_media_AudioAttributes.cpp b/core/jni/android_media_AudioAttributes.cpp index f1ae268f4c168..423ef7cd980b3 100644 --- a/core/jni/android_media_AudioAttributes.cpp +++ b/core/jni/android_media_AudioAttributes.cpp @@ -58,7 +58,7 @@ static struct { jmethodID setSystemUsage; jmethodID setInternalCapturePreset; jmethodID setContentType; - jmethodID setFlags; + jmethodID replaceFlags; jmethodID addTag; } gAudioAttributesBuilderMethods; @@ -130,7 +130,7 @@ static jint nativeAudioAttributesToJavaAudioAttributes( gAudioAttributesBuilderMethods.setContentType, attributes.content_type); env->CallObjectMethod(jAttributeBuilder.get(), - gAudioAttributesBuilderMethods.setFlags, + gAudioAttributesBuilderMethods.replaceFlags, attributes.flags); env->CallObjectMethod(jAttributeBuilder.get(), gAudioAttributesBuilderMethods.addTag, @@ -205,8 +205,8 @@ int register_android_media_AudioAttributes(JNIEnv *env) gAudioAttributesBuilderMethods.setContentType = GetMethodIDOrDie( env, audioAttributesBuilderClass, "setContentType", "(I)Landroid/media/AudioAttributes$Builder;"); - gAudioAttributesBuilderMethods.setFlags = GetMethodIDOrDie( - env, audioAttributesBuilderClass, "setFlags", + gAudioAttributesBuilderMethods.replaceFlags = GetMethodIDOrDie( + env, audioAttributesBuilderClass, "replaceFlags", "(I)Landroid/media/AudioAttributes$Builder;"); gAudioAttributesBuilderMethods.addTag = GetMethodIDOrDie( env, audioAttributesBuilderClass, "addTag",