[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 <francois.gaffie@renault.com>
Change-Id: I8492e8ddcb8eb0d03bbb2a539a631694b3f64196
This commit is contained in:
Francois Gaffie
2021-10-13 13:01:27 +02:00
parent a1afeb6910
commit fdd15ef637

View File

@@ -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",