From 69662a99d30da64cbe064f5cc646bb75d77c0b71 Mon Sep 17 00:00:00 2001 From: Gaurav Vaish Date: Mon, 30 Nov 2020 10:48:55 -0800 Subject: [PATCH] Add API Level guard for allowedCapturePolicy AudioAttributes::getAllowedCapturePolicy was added in API Level 29. Update WebRtcAudioTrack to add API Level check before using the API. Bug: webrtc:12250 Change-Id: Ica6604eb1d7fa736a0e64729a022eefcfb7b3020 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/195941 Commit-Queue: Gaurav Vaish Reviewed-by: Henrik Andreassson Cr-Commit-Position: refs/heads/master@{#32735} --- .../src/java/org/webrtc/audio/WebRtcAudioTrack.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/sdk/android/src/java/org/webrtc/audio/WebRtcAudioTrack.java b/sdk/android/src/java/org/webrtc/audio/WebRtcAudioTrack.java index 3e01b958de..a752280deb 100644 --- a/sdk/android/src/java/org/webrtc/audio/WebRtcAudioTrack.java +++ b/sdk/android/src/java/org/webrtc/audio/WebRtcAudioTrack.java @@ -411,8 +411,11 @@ class WebRtcAudioTrack { attributesBuilder.setContentType(overrideAttributes.getContentType()); } - attributesBuilder.setAllowedCapturePolicy(overrideAttributes.getAllowedCapturePolicy()) - .setFlags(overrideAttributes.getFlags()); + attributesBuilder.setFlags(overrideAttributes.getFlags()); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + attributesBuilder = applyAttributesOnQOrHigher(attributesBuilder, overrideAttributes); + } } // Create an audio track where the audio usage is for VoIP and the content type is speech. @@ -425,6 +428,12 @@ class WebRtcAudioTrack { bufferSizeInBytes, AudioTrack.MODE_STREAM, AudioManager.AUDIO_SESSION_ID_GENERATE); } + @TargetApi(Build.VERSION_CODES.Q) + private static AudioAttributes.Builder applyAttributesOnQOrHigher( + AudioAttributes.Builder builder, AudioAttributes overrideAttributes) { + return builder.setAllowedCapturePolicy(overrideAttributes.getAllowedCapturePolicy()); + } + @SuppressWarnings("deprecation") // Deprecated in API level 25. private static AudioTrack createAudioTrackOnLowerThanLollipop( int sampleRateInHz, int channelConfig, int bufferSizeInBytes) {