Merge "AudioPolicy: fix AudioMixingRule parceling"

This commit is contained in:
Eric Laurent
2022-01-04 16:35:42 +00:00
committed by Android (Google) Code Review
2 changed files with 10 additions and 21 deletions

View File

@@ -145,10 +145,8 @@ public class AudioMixingRule {
final int match_rule = mRule & ~RULE_EXCLUSION_MASK;
switch (match_rule) {
case RULE_MATCH_ATTRIBUTE_USAGE:
dest.writeInt(mAttr.getSystemUsage());
break;
case RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET:
dest.writeInt(mAttr.getCapturePreset());
mAttr.writeToParcel(dest, AudioAttributes.FLATTEN_TAGS/*flags*/);
break;
case RULE_MATCH_UID:
case RULE_MATCH_USERID:
@@ -266,12 +264,14 @@ public class AudioMixingRule {
public boolean isForCallRedirection() {
for (AudioMixMatchCriterion criterion : mCriteria) {
if (criterion.mAttr != null
&& (criterion.mRule == RULE_MATCH_ATTRIBUTE_USAGE
&& criterion.mAttr.getUsage() == AudioAttributes.USAGE_VOICE_COMMUNICATION)
&& criterion.mAttr.isForCallRedirection()
&& ((criterion.mRule == RULE_MATCH_ATTRIBUTE_USAGE
&& (criterion.mAttr.getUsage() == AudioAttributes.USAGE_VOICE_COMMUNICATION
|| criterion.mAttr.getUsage()
== AudioAttributes.USAGE_VOICE_COMMUNICATION_SIGNALLING))
|| (criterion.mRule == RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET
&& criterion.mAttr.getCapturePreset()
== MediaRecorder.AudioSource.VOICE_COMMUNICATION)
&& criterion.mAttr.isForCallRedirection()) {
&& (criterion.mAttr.getCapturePreset()
== MediaRecorder.AudioSource.VOICE_COMMUNICATION)))) {
return true;
}
}
@@ -713,19 +713,8 @@ public class AudioMixingRule {
Integer intProp = null;
switch (match_rule) {
case RULE_MATCH_ATTRIBUTE_USAGE:
int usage = in.readInt();
if (AudioAttributes.isSystemUsage(usage)) {
attr = new AudioAttributes.Builder()
.setSystemUsage(usage).build();
} else {
attr = new AudioAttributes.Builder()
.setUsage(usage).build();
}
break;
case RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET:
int preset = in.readInt();
attr = new AudioAttributes.Builder()
.setInternalCapturePreset(preset).build();
attr = AudioAttributes.CREATOR.createFromParcel(in);
break;
case RULE_MATCH_UID:
case RULE_MATCH_USERID:

View File

@@ -9771,7 +9771,7 @@ public class AudioService extends IAudioService.Stub
projection)) {
Slog.w(TAG, "Permission denied to register audio policy for pid "
+ Binder.getCallingPid() + " / uid " + Binder.getCallingUid()
+ ", need MODIFY_AUDIO_ROUTING or MediaProjection that can project audio");
+ ", need system permission or a MediaProjection that can project audio");
return null;
}