Merge "Add getters to AudioPlaybackCaptureConfiguration" into qt-dev
This commit is contained in:
@@ -23424,6 +23424,10 @@ package android.media {
|
||||
}
|
||||
|
||||
public final class AudioPlaybackCaptureConfiguration {
|
||||
method @NonNull public int[] getExcludeUids();
|
||||
method @NonNull public int[] getExcludeUsages();
|
||||
method @NonNull public int[] getMatchingUids();
|
||||
method @NonNull public int[] getMatchingUsages();
|
||||
method @NonNull public android.media.projection.MediaProjection getMediaProjection();
|
||||
}
|
||||
|
||||
|
||||
@@ -20,11 +20,14 @@ import android.annotation.NonNull;
|
||||
import android.media.AudioAttributes.AttributeUsage;
|
||||
import android.media.audiopolicy.AudioMix;
|
||||
import android.media.audiopolicy.AudioMixingRule;
|
||||
import android.media.audiopolicy.AudioMixingRule.AudioMixMatchCriterion;
|
||||
import android.media.projection.MediaProjection;
|
||||
import android.os.RemoteException;
|
||||
|
||||
import com.android.internal.util.Preconditions;
|
||||
|
||||
import java.util.function.ToIntFunction;
|
||||
|
||||
/**
|
||||
* Configuration for capturing audio played by other apps.
|
||||
*
|
||||
@@ -83,6 +86,39 @@ public final class AudioPlaybackCaptureConfiguration {
|
||||
return mProjection;
|
||||
}
|
||||
|
||||
/** @return the usages passed to {@link Builder#addMatchingUsage(int)}. */
|
||||
@AttributeUsage
|
||||
public @NonNull int[] getMatchingUsages() {
|
||||
return getIntPredicates(AudioMixingRule.RULE_MATCH_ATTRIBUTE_USAGE,
|
||||
criterion -> criterion.getAudioAttributes().getUsage());
|
||||
}
|
||||
|
||||
/** @return the UIDs passed to {@link Builder#addMatchingUid(int)}. */
|
||||
public @NonNull int[] getMatchingUids() {
|
||||
return getIntPredicates(AudioMixingRule.RULE_MATCH_UID,
|
||||
criterion -> criterion.getIntProp());
|
||||
}
|
||||
|
||||
/** @return the usages passed to {@link Builder#excludeUsage(int)}. */
|
||||
@AttributeUsage
|
||||
public @NonNull int[] getExcludeUsages() {
|
||||
return getIntPredicates(AudioMixingRule.RULE_EXCLUDE_ATTRIBUTE_USAGE,
|
||||
criterion -> criterion.getAudioAttributes().getUsage());
|
||||
}
|
||||
|
||||
/** @return the UIDs passed to {@link Builder#excludeUid(int)}. */
|
||||
public @NonNull int[] getExcludeUids() {
|
||||
return getIntPredicates(AudioMixingRule.RULE_EXCLUDE_UID,
|
||||
criterion -> criterion.getIntProp());
|
||||
}
|
||||
|
||||
private int[] getIntPredicates(int rule,
|
||||
ToIntFunction<AudioMixMatchCriterion> getPredicate) {
|
||||
return mAudioMixingRule.getCriteria().stream()
|
||||
.filter(criterion -> criterion.getRule() == rule)
|
||||
.mapToInt(getPredicate)
|
||||
.toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a mix that routes audio back into the app while still playing it from the speakers.
|
||||
|
||||
@@ -92,7 +92,8 @@ public class AudioMixingRule {
|
||||
public static final int RULE_EXCLUDE_UID =
|
||||
RULE_EXCLUSION_MASK | RULE_MATCH_UID;
|
||||
|
||||
static final class AudioMixMatchCriterion {
|
||||
/** @hide */
|
||||
public static final class AudioMixMatchCriterion {
|
||||
@UnsupportedAppUsage
|
||||
final AudioAttributes mAttr;
|
||||
@UnsupportedAppUsage
|
||||
@@ -137,6 +138,10 @@ public class AudioMixingRule {
|
||||
dest.writeInt(-1);
|
||||
}
|
||||
}
|
||||
|
||||
public AudioAttributes getAudioAttributes() { return mAttr; }
|
||||
public int getIntProp() { return mIntProp; }
|
||||
public int getRule() { return mRule; }
|
||||
}
|
||||
|
||||
boolean isAffectingUsage(int usage) {
|
||||
@@ -163,7 +168,8 @@ public class AudioMixingRule {
|
||||
int getTargetMixType() { return mTargetMixType; }
|
||||
@UnsupportedAppUsage
|
||||
private final ArrayList<AudioMixMatchCriterion> mCriteria;
|
||||
ArrayList<AudioMixMatchCriterion> getCriteria() { return mCriteria; }
|
||||
/** @hide */
|
||||
public ArrayList<AudioMixMatchCriterion> getCriteria() { return mCriteria; }
|
||||
@UnsupportedAppUsage
|
||||
private boolean mAllowPrivilegedPlaybackCapture = false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user