AudioDeviceCallback should not be used below SDK 23.

This gating should have been added in 6e46234589.

PiperOrigin-RevId: 544720503
This commit is contained in:
Googler 2023-06-30 19:17:32 +00:00 committed by microkatz
parent 9945033867
commit f486074f82

View file

@ -388,10 +388,12 @@ import java.util.concurrent.TimeoutException;
audioBecomingNoisyManager.setEnabled(builder.handleAudioBecomingNoisy); audioBecomingNoisyManager.setEnabled(builder.handleAudioBecomingNoisy);
audioFocusManager = new AudioFocusManager(builder.context, eventHandler, componentListener); audioFocusManager = new AudioFocusManager(builder.context, eventHandler, componentListener);
audioFocusManager.setAudioAttributes(builder.handleAudioFocus ? audioAttributes : null); audioFocusManager.setAudioAttributes(builder.handleAudioFocus ? audioAttributes : null);
if (suppressPlaybackOnUnsuitableOutput) { if (suppressPlaybackOnUnsuitableOutput && Util.SDK_INT >= 23) {
audioManager = (AudioManager) applicationContext.getSystemService(Context.AUDIO_SERVICE); audioManager = (AudioManager) applicationContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.registerAudioDeviceCallback( Api23.registerAudioDeviceCallback(
new NoSuitableOutputPlaybackSuppressionAudioDeviceCallback(), /* handler= */ null); audioManager,
new NoSuitableOutputPlaybackSuppressionAudioDeviceCallback(),
new Handler(applicationLooper));
} }
if (builder.deviceVolumeControlEnabled) { if (builder.deviceVolumeControlEnabled) {
streamVolumeManager = streamVolumeManager =
@ -3331,6 +3333,7 @@ import java.util.concurrent.TimeoutException;
private static final class Api23 { private static final class Api23 {
private Api23() {} private Api23() {}
@DoNotInline
public static boolean isSuitableAudioOutputPresentInAudioDeviceInfoList( public static boolean isSuitableAudioOutputPresentInAudioDeviceInfoList(
Context context, AudioDeviceInfo[] audioDeviceInfos) { Context context, AudioDeviceInfo[] audioDeviceInfos) {
if (!Util.isWear(context)) { if (!Util.isWear(context)) {
@ -3362,12 +3365,20 @@ import java.util.concurrent.TimeoutException;
} }
return false; return false;
} }
@DoNotInline
public static void registerAudioDeviceCallback(
AudioManager audioManager, AudioDeviceCallback audioDeviceCallback, Handler handler) {
audioManager.registerAudioDeviceCallback(audioDeviceCallback, handler);
}
} }
/** /**
* A {@link AudioDeviceCallback} to handle auto-resume and auto-pause for playback suppression due * A {@link AudioDeviceCallback} to change playback suppression reason when suitable audio outputs
* to no suitable audio output. * are either added in unsuitable output based playback suppression state or removed during an
* ongoing playback.
*/ */
@RequiresApi(23)
private final class NoSuitableOutputPlaybackSuppressionAudioDeviceCallback private final class NoSuitableOutputPlaybackSuppressionAudioDeviceCallback
extends AudioDeviceCallback { extends AudioDeviceCallback {