Loading core/api/system-current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -5410,6 +5410,8 @@ package android.media.audiopolicy { field public static final int MIX_STATE_DISABLED = -1; // 0xffffffff field public static final int MIX_STATE_IDLE = 0; // 0x0 field public static final int MIX_STATE_MIXING = 1; // 0x1 field public static final int MIX_TYPE_PLAYERS = 0; // 0x0 field public static final int MIX_TYPE_RECORDERS = 1; // 0x1 field public static final int ROUTE_FLAG_LOOP_BACK = 2; // 0x2 field public static final int ROUTE_FLAG_RENDER = 1; // 0x1 } Loading @@ -5423,6 +5425,7 @@ package android.media.audiopolicy { } public class AudioMixingRule { method public int getTargetMixType(); field public static final int RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET = 2; // 0x2 field public static final int RULE_MATCH_ATTRIBUTE_USAGE = 1; // 0x1 field public static final int RULE_MATCH_UID = 4; // 0x4 Loading @@ -5437,6 +5440,7 @@ package android.media.audiopolicy { method public android.media.audiopolicy.AudioMixingRule build(); method public android.media.audiopolicy.AudioMixingRule.Builder excludeMixRule(int, Object) throws java.lang.IllegalArgumentException; method public android.media.audiopolicy.AudioMixingRule.Builder excludeRule(android.media.AudioAttributes, int) throws java.lang.IllegalArgumentException; method @NonNull public android.media.audiopolicy.AudioMixingRule.Builder setTargetMixType(int); } public class AudioPolicy { media/java/android/media/audiopolicy/AudioMix.java +0 −2 Original line number Diff line number Diff line Loading @@ -113,12 +113,10 @@ public class AudioMix { */ public static final int MIX_TYPE_INVALID = -1; /** * @hide * Mix type indicating playback streams are mixed. */ public static final int MIX_TYPE_PLAYERS = 0; /** * @hide * Mix type indicating recording streams are mixed. */ public static final int MIX_TYPE_RECORDERS = 1; Loading media/java/android/media/audiopolicy/AudioMixingRule.java +30 −7 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ package android.media.audiopolicy; import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.SystemApi; import android.compat.annotation.UnsupportedAppUsage; Loading @@ -24,6 +27,7 @@ import android.os.Build; import android.os.Parcel; import android.util.Log; import java.lang.annotation.Retention; import java.util.ArrayList; import java.util.Iterator; import java.util.Objects; Loading Loading @@ -199,7 +203,19 @@ public class AudioMixingRule { } private final int mTargetMixType; int getTargetMixType() { return mTargetMixType; } /** @hide */ @IntDef({AudioMix.MIX_TYPE_PLAYERS, AudioMix.MIX_TYPE_RECORDERS}) @Retention(SOURCE) public @interface MixType {} /** * Gets target mix type of the mixing rule. */ public @MixType int getTargetMixType() { return mTargetMixType; } @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private final ArrayList<AudioMixMatchCriterion> mCriteria; /** @hide */ Loading Loading @@ -469,17 +485,24 @@ public class AudioMixingRule { } /** * Set target mix type of the mixing rule. * Sets target mix type of the mixing rule. * * <p>Note: If the mix type was not specified, it will be decided automatically by mixing * rule. For {@link #RULE_MATCH_UID}, the default type is {@link AudioMix#MIX_TYPE_PLAYERS}. * <p>Note: If the mix type was not specified, it will be decided automatically by matched * mixing rule. For example, {@link AudioMixingRule#RULE_MATCH_ATTRIBUTE_USAGE} or {@link * AudioMixingRule#RULE_MATCH_USERID} applied {@link AudioMix#MIX_TYPE_PLAYERS}, {@link * AudioMixingRule#RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET} applied {@link * AudioMix#MIX_TYPE_RECORDERS}. For {@link AudioMixingRule#RULE_MATCH_UID}, the mix type * could be {@link AudioMix#MIX_TYPE_PLAYERS} or {@link AudioMix#MIX_TYPE_RECORDERS}, and * {@link AudioMix#MIX_TYPE_PLAYERS} is the default value. * * @param mixType {@link AudioMix#MIX_TYPE_PLAYERS} or {@link AudioMix#MIX_TYPE_RECORDERS} * @return the same Builder instance. * * @hide */ public @NonNull Builder setTargetMixType(int mixType) { public @NonNull Builder setTargetMixType(@MixType int mixType) { if (mixType != AudioMix.MIX_TYPE_PLAYERS && mixType != AudioMix.MIX_TYPE_RECORDERS) { throw new IllegalArgumentException("Illegal argument for mix type"); } mTargetMixType = mixType; Log.i("AudioMixingRule", "Builder setTargetMixType " + mixType); return this; Loading Loading
core/api/system-current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -5410,6 +5410,8 @@ package android.media.audiopolicy { field public static final int MIX_STATE_DISABLED = -1; // 0xffffffff field public static final int MIX_STATE_IDLE = 0; // 0x0 field public static final int MIX_STATE_MIXING = 1; // 0x1 field public static final int MIX_TYPE_PLAYERS = 0; // 0x0 field public static final int MIX_TYPE_RECORDERS = 1; // 0x1 field public static final int ROUTE_FLAG_LOOP_BACK = 2; // 0x2 field public static final int ROUTE_FLAG_RENDER = 1; // 0x1 } Loading @@ -5423,6 +5425,7 @@ package android.media.audiopolicy { } public class AudioMixingRule { method public int getTargetMixType(); field public static final int RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET = 2; // 0x2 field public static final int RULE_MATCH_ATTRIBUTE_USAGE = 1; // 0x1 field public static final int RULE_MATCH_UID = 4; // 0x4 Loading @@ -5437,6 +5440,7 @@ package android.media.audiopolicy { method public android.media.audiopolicy.AudioMixingRule build(); method public android.media.audiopolicy.AudioMixingRule.Builder excludeMixRule(int, Object) throws java.lang.IllegalArgumentException; method public android.media.audiopolicy.AudioMixingRule.Builder excludeRule(android.media.AudioAttributes, int) throws java.lang.IllegalArgumentException; method @NonNull public android.media.audiopolicy.AudioMixingRule.Builder setTargetMixType(int); } public class AudioPolicy {
media/java/android/media/audiopolicy/AudioMix.java +0 −2 Original line number Diff line number Diff line Loading @@ -113,12 +113,10 @@ public class AudioMix { */ public static final int MIX_TYPE_INVALID = -1; /** * @hide * Mix type indicating playback streams are mixed. */ public static final int MIX_TYPE_PLAYERS = 0; /** * @hide * Mix type indicating recording streams are mixed. */ public static final int MIX_TYPE_RECORDERS = 1; Loading
media/java/android/media/audiopolicy/AudioMixingRule.java +30 −7 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ package android.media.audiopolicy; import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.SystemApi; import android.compat.annotation.UnsupportedAppUsage; Loading @@ -24,6 +27,7 @@ import android.os.Build; import android.os.Parcel; import android.util.Log; import java.lang.annotation.Retention; import java.util.ArrayList; import java.util.Iterator; import java.util.Objects; Loading Loading @@ -199,7 +203,19 @@ public class AudioMixingRule { } private final int mTargetMixType; int getTargetMixType() { return mTargetMixType; } /** @hide */ @IntDef({AudioMix.MIX_TYPE_PLAYERS, AudioMix.MIX_TYPE_RECORDERS}) @Retention(SOURCE) public @interface MixType {} /** * Gets target mix type of the mixing rule. */ public @MixType int getTargetMixType() { return mTargetMixType; } @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private final ArrayList<AudioMixMatchCriterion> mCriteria; /** @hide */ Loading Loading @@ -469,17 +485,24 @@ public class AudioMixingRule { } /** * Set target mix type of the mixing rule. * Sets target mix type of the mixing rule. * * <p>Note: If the mix type was not specified, it will be decided automatically by mixing * rule. For {@link #RULE_MATCH_UID}, the default type is {@link AudioMix#MIX_TYPE_PLAYERS}. * <p>Note: If the mix type was not specified, it will be decided automatically by matched * mixing rule. For example, {@link AudioMixingRule#RULE_MATCH_ATTRIBUTE_USAGE} or {@link * AudioMixingRule#RULE_MATCH_USERID} applied {@link AudioMix#MIX_TYPE_PLAYERS}, {@link * AudioMixingRule#RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET} applied {@link * AudioMix#MIX_TYPE_RECORDERS}. For {@link AudioMixingRule#RULE_MATCH_UID}, the mix type * could be {@link AudioMix#MIX_TYPE_PLAYERS} or {@link AudioMix#MIX_TYPE_RECORDERS}, and * {@link AudioMix#MIX_TYPE_PLAYERS} is the default value. * * @param mixType {@link AudioMix#MIX_TYPE_PLAYERS} or {@link AudioMix#MIX_TYPE_RECORDERS} * @return the same Builder instance. * * @hide */ public @NonNull Builder setTargetMixType(int mixType) { public @NonNull Builder setTargetMixType(@MixType int mixType) { if (mixType != AudioMix.MIX_TYPE_PLAYERS && mixType != AudioMix.MIX_TYPE_RECORDERS) { throw new IllegalArgumentException("Illegal argument for mix type"); } mTargetMixType = mixType; Log.i("AudioMixingRule", "Builder setTargetMixType " + mixType); return this; Loading