Use AndroidX Media compat in AudioReactor

This commit is contained in:
TacoTheDank 2020-12-30 17:10:57 -05:00
parent 28802805f8
commit ebd589c9cb
2 changed files with 13 additions and 27 deletions

View File

@ -203,6 +203,7 @@ dependencies {
implementation 'androidx.core:core-ktx:1.3.2' implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.documentfile:documentfile:1.0.1' implementation 'androidx.documentfile:documentfile:1.0.1'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0' implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
implementation 'androidx.media:media:1.2.1'
implementation 'androidx.webkit:webkit:1.4.0' implementation 'androidx.webkit:webkit:1.4.0'
implementation "androidx.lifecycle:lifecycle-livedata:${androidxLifecycleVersion}" implementation "androidx.lifecycle:lifecycle-livedata:${androidxLifecycleVersion}"

View File

@ -5,14 +5,14 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator; import android.animation.ValueAnimator;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.media.AudioFocusRequest;
import android.media.AudioManager; import android.media.AudioManager;
import android.media.audiofx.AudioEffect; import android.media.audiofx.AudioEffect;
import android.os.Build;
import android.util.Log; import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.media.AudioFocusRequestCompat;
import androidx.media.AudioManagerCompat;
import com.google.android.exoplayer2.SimpleExoPlayer; import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.analytics.AnalyticsListener; import com.google.android.exoplayer2.analytics.AnalyticsListener;
@ -21,20 +21,17 @@ public class AudioReactor implements AudioManager.OnAudioFocusChangeListener, An
private static final String TAG = "AudioFocusReactor"; private static final String TAG = "AudioFocusReactor";
private static final boolean SHOULD_BUILD_FOCUS_REQUEST =
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O;
private static final int DUCK_DURATION = 1500; private static final int DUCK_DURATION = 1500;
private static final float DUCK_AUDIO_TO = .2f; private static final float DUCK_AUDIO_TO = .2f;
private static final int FOCUS_GAIN_TYPE = AudioManager.AUDIOFOCUS_GAIN; private static final int FOCUS_GAIN_TYPE = AudioManagerCompat.AUDIOFOCUS_GAIN;
private static final int STREAM_TYPE = AudioManager.STREAM_MUSIC; private static final int STREAM_TYPE = AudioManager.STREAM_MUSIC;
private final SimpleExoPlayer player; private final SimpleExoPlayer player;
private final Context context; private final Context context;
private final AudioManager audioManager; private final AudioManager audioManager;
private final AudioFocusRequest request; private final AudioFocusRequestCompat request;
public AudioReactor(@NonNull final Context context, public AudioReactor(@NonNull final Context context,
@NonNull final SimpleExoPlayer player) { @NonNull final SimpleExoPlayer player) {
@ -43,15 +40,11 @@ public class AudioReactor implements AudioManager.OnAudioFocusChangeListener, An
this.audioManager = ContextCompat.getSystemService(context, AudioManager.class); this.audioManager = ContextCompat.getSystemService(context, AudioManager.class);
player.addAnalyticsListener(this); player.addAnalyticsListener(this);
if (SHOULD_BUILD_FOCUS_REQUEST) { request = new AudioFocusRequestCompat.Builder(FOCUS_GAIN_TYPE)
request = new AudioFocusRequest.Builder(FOCUS_GAIN_TYPE) //.setAcceptsDelayedFocusGain(true)
.setAcceptsDelayedFocusGain(true) .setWillPauseWhenDucked(true)
.setWillPauseWhenDucked(true) .setOnAudioFocusChangeListener(this)
.setOnAudioFocusChangeListener(this) .build();
.build();
} else {
request = null;
}
} }
public void dispose() { public void dispose() {
@ -64,19 +57,11 @@ public class AudioReactor implements AudioManager.OnAudioFocusChangeListener, An
//////////////////////////////////////////////////////////////////////////*/ //////////////////////////////////////////////////////////////////////////*/
public void requestAudioFocus() { public void requestAudioFocus() {
if (SHOULD_BUILD_FOCUS_REQUEST) { AudioManagerCompat.requestAudioFocus(audioManager, request);
audioManager.requestAudioFocus(request);
} else {
audioManager.requestAudioFocus(this, STREAM_TYPE, FOCUS_GAIN_TYPE);
}
} }
public void abandonAudioFocus() { public void abandonAudioFocus() {
if (SHOULD_BUILD_FOCUS_REQUEST) { AudioManagerCompat.abandonAudioFocusRequest(audioManager, request);
audioManager.abandonAudioFocusRequest(request);
} else {
audioManager.abandonAudioFocus(this);
}
} }
public int getVolume() { public int getVolume() {
@ -88,7 +73,7 @@ public class AudioReactor implements AudioManager.OnAudioFocusChangeListener, An
} }
public int getMaxVolume() { public int getMaxVolume() {
return audioManager.getStreamMaxVolume(STREAM_TYPE); return AudioManagerCompat.getStreamMaxVolume(audioManager, STREAM_TYPE);
} }
/*////////////////////////////////////////////////////////////////////////// /*//////////////////////////////////////////////////////////////////////////