mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 01:40:07 +01:00
Fix audio duck due to MP4 gif.
This commit is contained in:
committed by
Cody Henthorne
parent
015fc9be2c
commit
109d37c0d2
@@ -104,6 +104,7 @@ public final class VideoMediaPreviewFragment extends MediaPreviewFragment {
|
||||
|
||||
if (isVideoGif) {
|
||||
videoView.loopForever();
|
||||
videoView.disableAudioFocus();
|
||||
}
|
||||
|
||||
videoView.setOnClickListener(v -> events.singleTapOnMedia());
|
||||
|
||||
@@ -75,6 +75,8 @@ public class VideoPlayer extends FrameLayout {
|
||||
private ExoPlayerListener exoPlayerListener;
|
||||
private Player.Listener playerListener;
|
||||
private boolean muted;
|
||||
private AudioFocusRequest audioFocusRequest;
|
||||
private boolean requestAudioFocus = true;
|
||||
|
||||
public VideoPlayer(Context context) {
|
||||
this(context, null);
|
||||
@@ -100,7 +102,6 @@ public class VideoPlayer extends FrameLayout {
|
||||
this.exoControls = createPlayerControls(getContext());
|
||||
|
||||
final AudioManager audioManager = ContextCompat.getSystemService(context, AudioManager.class);
|
||||
final AudioFocusRequest audioFocusRequest;
|
||||
if (Build.VERSION.SDK_INT >= 26) {
|
||||
audioFocusRequest = new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK)
|
||||
.setAudioAttributes(
|
||||
@@ -133,19 +134,23 @@ public class VideoPlayer extends FrameLayout {
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 26 && audioFocusRequest != null) {
|
||||
if (isPlaying) {
|
||||
audioManager.requestAudioFocus(audioFocusRequest);
|
||||
if (requestAudioFocus) {
|
||||
audioManager.requestAudioFocus(audioFocusRequest);
|
||||
}
|
||||
} else {
|
||||
audioManager.abandonAudioFocusRequest(audioFocusRequest);
|
||||
}
|
||||
} else {
|
||||
if (isPlaying) {
|
||||
audioManager.requestAudioFocus(
|
||||
focusChange -> {
|
||||
// Do nothing
|
||||
},
|
||||
AudioManager.STREAM_MUSIC,
|
||||
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
|
||||
);
|
||||
if (requestAudioFocus) {
|
||||
audioManager.requestAudioFocus(
|
||||
focusChange -> {
|
||||
// Do nothing
|
||||
},
|
||||
AudioManager.STREAM_MUSIC,
|
||||
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
|
||||
);
|
||||
}
|
||||
} else {
|
||||
audioManager.abandonAudioFocus(
|
||||
focusChange -> {
|
||||
@@ -429,6 +434,10 @@ public class VideoPlayer extends FrameLayout {
|
||||
}
|
||||
}
|
||||
|
||||
public void disableAudioFocus() {
|
||||
requestAudioFocus = false;
|
||||
}
|
||||
|
||||
private @NonNull MediaItem.ClippingConfiguration getClippingConfiguration(long startMs, long endMs) {
|
||||
return startMs != endMs ? new MediaItem.ClippingConfiguration.Builder()
|
||||
.setStartPositionMs(startMs)
|
||||
|
||||
Reference in New Issue
Block a user