From 6632531c4ab8886ea5353142d7bc5215a32f91bf Mon Sep 17 00:00:00 2001 From: tonihei Date: Mon, 22 Jan 2024 05:17:35 -0800 Subject: [PATCH] Catch exceptions when retrieving current device from audio manager We can just continue to assume that we don't know the current device. This case happens on the latest Robolectric release where this method call isn't implemented yet. As we not generally assume that the method can throw, this workaround can be removed once Robolectric is updated again. #minor-release PiperOrigin-RevId: 600426851 (cherry picked from commit 81615dd5b56dddc008401a7a8513baf5336c01b6) --- .../exoplayer/audio/AudioCapabilities.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioCapabilities.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioCapabilities.java index d88d7b42ee..3ca80ae7d8 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioCapabilities.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioCapabilities.java @@ -486,10 +486,18 @@ public final class AudioCapabilities { @DoNotInline public static AudioDeviceInfoApi23 getDefaultRoutedDeviceForAttributes( AudioManager audioManager, AudioAttributes audioAttributes) { - List audioDevices = - checkNotNull(audioManager) - .getAudioDevicesForAttributes( - audioAttributes.getAudioAttributesV21().audioAttributes); + List audioDevices; + try { + audioDevices = + checkNotNull(audioManager) + .getAudioDevicesForAttributes( + audioAttributes.getAudioAttributesV21().audioAttributes); + } catch (RuntimeException e) { + // Audio manager failed to retrieve devices. + // TODO: b/306324391 - Remove once https://github.com/robolectric/robolectric/commit/442dff + // is released. + return null; + } if (audioDevices.isEmpty()) { // Can't find current device. return null;