Skip to content

Commit

Permalink
Utilize exclusive AudioFocus.
Browse files Browse the repository at this point in the history
  • Loading branch information
alex-signal authored and greyson-signal committed May 29, 2020
1 parent 9da309c commit 2ddd143
Showing 1 changed file with 11 additions and 3 deletions.
Expand Up @@ -17,8 +17,15 @@ public abstract class AudioManagerCompat {

private static final String TAG = Log.tag(AudioManagerCompat.class);

private static final int AUDIOFOCUS_GAIN = AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE;

protected final AudioManager audioManager;

@SuppressWarnings("CodeBlock2Expr")
protected final AudioManager.OnAudioFocusChangeListener onAudioFocusChangeListener = focusChange -> {
Log.i(TAG, "onAudioFocusChangeListener: " + focusChange);
};

private AudioManagerCompat(@NonNull Context context) {
audioManager = ServiceUtil.getAudioManager(context);
}
Expand Down Expand Up @@ -66,8 +73,9 @@ public void requestCallAudioFocus() {
return;
}

audioFocusRequest = new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT)
audioFocusRequest = new AudioFocusRequest.Builder(AUDIOFOCUS_GAIN)
.setAudioAttributes(AUDIO_ATTRIBUTES)
.setOnAudioFocusChangeListener(onAudioFocusChangeListener)
.build();

int result = audioManager.requestAudioFocus(audioFocusRequest);
Expand Down Expand Up @@ -129,7 +137,7 @@ public SoundPool createSoundPool() {

@Override
public void requestCallAudioFocus() {
int result = audioManager.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
int result = audioManager.requestAudioFocus(onAudioFocusChangeListener, AudioManager.STREAM_VOICE_CALL, AUDIOFOCUS_GAIN);

if (result != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
Log.w(TAG, "Audio focus not granted. Result code: " + result);
Expand All @@ -138,7 +146,7 @@ public void requestCallAudioFocus() {

@Override
public void abandonCallAudioFocus() {
int result = audioManager.abandonAudioFocus(null);
int result = audioManager.abandonAudioFocus(onAudioFocusChangeListener);

if (result != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
Log.w(TAG, "Audio focus abandon failed. Result code: " + result);
Expand Down

0 comments on commit 2ddd143

Please sign in to comment.