From 05672e534e5ef64ae3f8a8566537ab61a816f1ae Mon Sep 17 00:00:00 2001 From: Francois Gaffie Date: Wed, 25 Mar 2020 13:24:14 +0100 Subject: [PATCH] AudioService: fix AudioProductStrategy matching rule Strategies use rules on attributes, and use public getter to compare usages. However, some usage are system only and now filtered by public getter. This CL fixes this issue by adding a hidden get for usage that return whatever public or system usage. Test: adb shell am instrument -w -e class com.android.audiopolicytest.AudioManagerTest#testAudioAttributesToStreamTypes com.android.audiopolicytest Signed-off-by: Francois Gaffie Change-Id: Iddd55af8f230cb063dcaa9ba950b890cbbb81643 Merged-In: I377e840b18443c33fb0b562b27fbc706aaeb8055 --- media/java/android/media/AudioAttributes.java | 10 ++++++++++ .../media/audiopolicy/AudioProductStrategy.java | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/media/java/android/media/AudioAttributes.java b/media/java/android/media/AudioAttributes.java index bb874045817eb..bd54f2b5e3911 100644 --- a/media/java/android/media/AudioAttributes.java +++ b/media/java/android/media/AudioAttributes.java @@ -505,6 +505,16 @@ public final class AudioAttributes implements Parcelable { return (mFlags & FLAG_ALL); } + /** + * @hide + * Return usage, even the non-public ones. + * Internal use only + * @return one of the values that can be set in {@link Builder#setUsage(int)} + */ + public int getSystemUsage() { + return mUsage; + } + /** * @hide * Return the Bundle of data. diff --git a/media/java/android/media/audiopolicy/AudioProductStrategy.java b/media/java/android/media/audiopolicy/AudioProductStrategy.java index a62e847f320aa..75c6e1e7fcaf5 100644 --- a/media/java/android/media/audiopolicy/AudioProductStrategy.java +++ b/media/java/android/media/audiopolicy/AudioProductStrategy.java @@ -336,8 +336,8 @@ public final class AudioProductStrategy implements Parcelable { if (refAttr.equals(sDefaultAttributes)) { return false; } - return ((refAttr.getUsage() == AudioAttributes.USAGE_UNKNOWN) - || (attr.getUsage() == refAttr.getUsage())) + return ((refAttr.getSystemUsage() == AudioAttributes.USAGE_UNKNOWN) + || (attr.getSystemUsage() == refAttr.getSystemUsage())) && ((refAttr.getContentType() == AudioAttributes.CONTENT_TYPE_UNKNOWN) || (attr.getContentType() == refAttr.getContentType())) && ((refAttr.getAllFlags() == 0)