From 1073ee633040609e7776a4664cb9269a639fcaee Mon Sep 17 00:00:00 2001 From: jiabin Date: Tue, 16 Apr 2019 17:27:41 -0700 Subject: [PATCH] Treat FLAG_MUTE_HAPTIC separately from mFlags. For get/set APIs, FLAG_MUTE_HAPTIC is known as a boolean value instead of a flag. In that case, it should not be changed when calling set flags API to modify the flags. By doing this, it helps the FLAG_MUTE_HAPTIC is set correctly. Bug: 130670988 Test: Manually Change-Id: I6a507d1f6f82e5ea6520f83279f73f851605c93f --- media/java/android/media/AudioAttributes.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/media/java/android/media/AudioAttributes.java b/media/java/android/media/AudioAttributes.java index e655460c2ba12..a9150d4b74555 100644 --- a/media/java/android/media/AudioAttributes.java +++ b/media/java/android/media/AudioAttributes.java @@ -388,10 +388,12 @@ public final class AudioAttributes implements Parcelable { */ public static final int FLAG_NO_SYSTEM_CAPTURE = 0x1 << 12; + // Note that even though FLAG_MUTE_HAPTIC is stored as a flag bit, it is not here since + // it is known as a boolean value outside of AudioAttributes. private static final int FLAG_ALL = FLAG_AUDIBILITY_ENFORCED | FLAG_SECURE | FLAG_SCO | FLAG_BEACON | FLAG_HW_AV_SYNC | FLAG_HW_HOTWORD | FLAG_BYPASS_INTERRUPTION_POLICY | FLAG_BYPASS_MUTE | FLAG_LOW_LATENCY | FLAG_DEEP_BUFFER | FLAG_NO_MEDIA_PROJECTION - | FLAG_MUTE_HAPTIC | FLAG_NO_SYSTEM_CAPTURE; + | FLAG_NO_SYSTEM_CAPTURE; private final static int FLAG_ALL_PUBLIC = FLAG_AUDIBILITY_ENFORCED | FLAG_HW_AV_SYNC | FLAG_LOW_LATENCY; @@ -598,8 +600,9 @@ public final class AudioAttributes implements Parcelable { public Builder(AudioAttributes aa) { mUsage = aa.mUsage; mContentType = aa.mContentType; - mFlags = aa.mFlags; + mFlags = aa.getAllFlags(); mTags = (HashSet) aa.mTags.clone(); + mMuteHapticChannels = aa.areHapticChannelsMuted(); } /** @@ -812,7 +815,7 @@ public final class AudioAttributes implements Parcelable { AudioProductStrategy.getAudioAttributesForStrategyWithLegacyStreamType( streamType); if (attributes != null) { - return new Builder(attributes); + return new Builder(attributes).setHapticChannelsMuted(mMuteHapticChannels); } } switch(streamType) {