Loading media/java/android/media/audiopolicy/AudioMixingRule.java +9 −20 Original line number Diff line number Diff line Loading @@ -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: Loading Loading @@ -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; } } Loading Loading @@ -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: Loading services/core/java/com/android/server/audio/AudioService.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading
media/java/android/media/audiopolicy/AudioMixingRule.java +9 −20 Original line number Diff line number Diff line Loading @@ -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: Loading Loading @@ -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; } } Loading Loading @@ -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: Loading
services/core/java/com/android/server/audio/AudioService.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading