Class AudioFocusManager
-
- All Implemented Interfaces:
public final class AudioFocusManagerA utility class to manage audio focus for an Android application. Ensures proper handling of audio focus requests, abandonment, and audio focus changes across different API levels (pre and post Android O).
IMPORTANT: Uses application context to prevent memory leaks. Android's AudioManager may retain AudioFocusRequest references in its internal mAudioFocusIdListenerMap even after abandonAudioFocusRequest() is called, so using Activity context would cause Activity leaks.
-
-
Field Summary
Fields Modifier and Type Field Description private final AudioAttributesaudioAttributes
-
Constructor Summary
Constructors Constructor Description AudioFocusManager(Context context)
-
Method Summary
Modifier and Type Method Description final AudioAttributesgetAudioAttributes()final UnitsetAudioFocusListener(AudioFocusListener listener)final BooleanrequestAudioFocus()Requests audio focus for the app. final UnitabandonAudioFocus()Abandons the currently held audio focus, ensuring the app no longer claims priority over audio playback. final Unitrelease()Releases resources associated with the AudioFocusManager. -
-
Constructor Detail
-
AudioFocusManager
AudioFocusManager(Context context)
-
-
Method Detail
-
getAudioAttributes
@RequiresApi(api = 26) final AudioAttributes getAudioAttributes()
-
setAudioFocusListener
final Unit setAudioFocusListener(AudioFocusListener listener)
-
requestAudioFocus
final Boolean requestAudioFocus()
Requests audio focus for the app. On Android O and above, it uses an AudioFocusRequest with specified audio attributes. On earlier API levels, it directly requests audio focus using AudioManager.
Wraps AudioManager calls in try-catch to handle DeadSystemRuntimeException which can occur when the system audio service has died.
- Returns:
true if audio focus is successfully granted, false otherwise.
-
abandonAudioFocus
final Unit abandonAudioFocus()
Abandons the currently held audio focus, ensuring the app no longer claims priority over audio playback. Compatible with both Android O+ (using AudioFocusRequest) and earlier versions.
Wraps AudioManager calls in try-catch to handle DeadSystemRuntimeException which can occur when the system audio service has died.
IMPORTANT: Must be called before nullifying audioFocusRequest to properly unregister the listener from AudioManager's internal map.
-
-
-
-