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