44import android .content .Intent ;
55import android .media .AudioManager ;
66import android .media .audiofx .AudioEffect ;
7+ import android .util .Log ;
78
89import androidx .annotation .NonNull ;
910import androidx .core .content .ContextCompat ;
11+ import androidx .media .AudioFocusRequestCompat ;
1012import androidx .media .AudioManagerCompat ;
1113
1214import com .google .android .exoplayer2 .ExoPlayer ;
@@ -16,25 +18,48 @@ public class AudioReactor implements AnalyticsListener {
1618
1719 private static final String TAG = "AudioFocusReactor" ;
1820
21+ private static final int FOCUS_GAIN_TYPE = AudioManagerCompat .AUDIOFOCUS_GAIN ;
1922 private static final int STREAM_TYPE = AudioManager .STREAM_MUSIC ;
2023
2124 private final ExoPlayer player ;
2225 private final Context context ;
2326 private final AudioManager audioManager ;
27+ private final AudioFocusRequestCompat request ;
2428
2529 public AudioReactor (@ NonNull final Context context ,
2630 @ NonNull final ExoPlayer player ) {
2731 this .player = player ;
2832 this .context = context ;
2933 this .audioManager = ContextCompat .getSystemService (context , AudioManager .class );
3034 player .addAnalyticsListener (this );
35+
36+ request = new AudioFocusRequestCompat .Builder (FOCUS_GAIN_TYPE )
37+ .setWillPauseWhenDucked (true )
38+ .setOnAudioFocusChangeListener (focusChange -> {
39+ })
40+ .build ();
3141 }
3242
3343 public void dispose () {
44+ abandonAudioFocus ();
3445 player .removeAnalyticsListener (this );
3546 notifyAudioSessionUpdate (false , player .getAudioSessionId ());
3647 }
3748
49+ /*//////////////////////////////////////////////////////////////////////////
50+ // Audio Focus
51+ //////////////////////////////////////////////////////////////////////////*/
52+
53+ public void requestAudioFocus () {
54+ Log .d (TAG , "requestAudioFocus() called" );
55+ AudioManagerCompat .requestAudioFocus (audioManager , request );
56+ }
57+
58+ public void abandonAudioFocus () {
59+ Log .d (TAG , "abandonAudioFocus() called" );
60+ AudioManagerCompat .abandonAudioFocusRequest (audioManager , request );
61+ }
62+
3863 /*//////////////////////////////////////////////////////////////////////////
3964 // Audio Manager
4065 //////////////////////////////////////////////////////////////////////////*/
0 commit comments