2021-06-27 20:44:35 +00:00
|
|
|
package androidx.media;
|
|
|
|
|
2021-11-08 18:25:28 +00:00
|
|
|
import android.media.AudioFocusRequest;
|
2021-06-27 20:44:35 +00:00
|
|
|
import android.media.AudioManager;
|
|
|
|
import android.os.Build;
|
2021-11-08 18:25:28 +00:00
|
|
|
import androidx.annotation.DoNotInline;
|
2021-06-27 20:44:35 +00:00
|
|
|
import androidx.annotation.IntRange;
|
|
|
|
import androidx.annotation.NonNull;
|
2021-11-08 18:25:28 +00:00
|
|
|
import androidx.annotation.RequiresApi;
|
2021-06-27 20:44:35 +00:00
|
|
|
public final class AudioManagerCompat {
|
|
|
|
public static final int AUDIOFOCUS_GAIN = 1;
|
|
|
|
public static final int AUDIOFOCUS_GAIN_TRANSIENT = 2;
|
|
|
|
public static final int AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE = 4;
|
|
|
|
public static final int AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK = 3;
|
|
|
|
private static final String TAG = "AudioManCompat";
|
|
|
|
|
2021-11-08 18:25:28 +00:00
|
|
|
@RequiresApi(26)
|
|
|
|
public static class Api26Impl {
|
|
|
|
private Api26Impl() {
|
|
|
|
}
|
|
|
|
|
|
|
|
@DoNotInline
|
|
|
|
public static int abandonAudioFocusRequest(AudioManager audioManager, AudioFocusRequest audioFocusRequest) {
|
|
|
|
return audioManager.abandonAudioFocusRequest(audioFocusRequest);
|
|
|
|
}
|
|
|
|
|
|
|
|
@DoNotInline
|
|
|
|
public static int requestAudioFocus(AudioManager audioManager, AudioFocusRequest audioFocusRequest) {
|
|
|
|
return audioManager.requestAudioFocus(audioFocusRequest);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@RequiresApi(28)
|
|
|
|
public static class Api28Impl {
|
|
|
|
private Api28Impl() {
|
|
|
|
}
|
|
|
|
|
|
|
|
@DoNotInline
|
|
|
|
public static int getStreamMinVolume(AudioManager audioManager, int i) {
|
|
|
|
return audioManager.getStreamMinVolume(i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-06-27 20:44:35 +00:00
|
|
|
private AudioManagerCompat() {
|
|
|
|
}
|
|
|
|
|
|
|
|
public static int abandonAudioFocusRequest(@NonNull AudioManager audioManager, @NonNull AudioFocusRequestCompat audioFocusRequestCompat) {
|
|
|
|
if (audioManager == null) {
|
|
|
|
throw new IllegalArgumentException("AudioManager must not be null");
|
|
|
|
} else if (audioFocusRequestCompat != null) {
|
2021-11-08 18:25:28 +00:00
|
|
|
return Build.VERSION.SDK_INT >= 26 ? Api26Impl.abandonAudioFocusRequest(audioManager, audioFocusRequestCompat.getAudioFocusRequest()) : audioManager.abandonAudioFocus(audioFocusRequestCompat.getOnAudioFocusChangeListener());
|
2021-06-27 20:44:35 +00:00
|
|
|
} else {
|
|
|
|
throw new IllegalArgumentException("AudioFocusRequestCompat must not be null");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@IntRange(from = 0)
|
|
|
|
public static int getStreamMaxVolume(@NonNull AudioManager audioManager, int i) {
|
|
|
|
return audioManager.getStreamMaxVolume(i);
|
|
|
|
}
|
|
|
|
|
|
|
|
@IntRange(from = 0)
|
|
|
|
public static int getStreamMinVolume(@NonNull AudioManager audioManager, int i) {
|
|
|
|
if (Build.VERSION.SDK_INT >= 28) {
|
2021-11-08 18:25:28 +00:00
|
|
|
return Api28Impl.getStreamMinVolume(audioManager, i);
|
2021-06-27 20:44:35 +00:00
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static int requestAudioFocus(@NonNull AudioManager audioManager, @NonNull AudioFocusRequestCompat audioFocusRequestCompat) {
|
|
|
|
if (audioManager == null) {
|
|
|
|
throw new IllegalArgumentException("AudioManager must not be null");
|
|
|
|
} else if (audioFocusRequestCompat != null) {
|
2021-11-08 18:25:28 +00:00
|
|
|
return Build.VERSION.SDK_INT >= 26 ? Api26Impl.requestAudioFocus(audioManager, audioFocusRequestCompat.getAudioFocusRequest()) : audioManager.requestAudioFocus(audioFocusRequestCompat.getOnAudioFocusChangeListener(), audioFocusRequestCompat.getAudioAttributesCompat().getLegacyStreamType(), audioFocusRequestCompat.getFocusGain());
|
2021-06-27 20:44:35 +00:00
|
|
|
} else {
|
|
|
|
throw new IllegalArgumentException("AudioFocusRequestCompat must not be null");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|