Implement correct video story sound behaviour.

This commit is contained in:
Alex Hart
2022-06-27 09:19:33 -03:00
committed by Cody Henthorne
parent 521bd2cce4
commit 1cfa5c31f2
13 changed files with 389 additions and 0 deletions

View File

@@ -33,6 +33,7 @@ import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.source.ClippingMediaSource;
import com.google.android.exoplayer2.source.DefaultMediaSourceFactory;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.TrackGroupArray;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
import com.google.android.exoplayer2.ui.PlayerControlView;
import com.google.android.exoplayer2.ui.PlayerView;
@@ -41,6 +42,7 @@ import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.mms.VideoSlide;
import org.thoughtcrime.securesms.util.MediaUtil;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
@@ -136,6 +138,36 @@ public class VideoPlayer extends FrameLayout {
exoPlayer.setPlayWhenReady(autoplay);
}
public void mute() {
if (exoPlayer != null && exoPlayer.getAudioComponent() != null) {
exoPlayer.getAudioComponent().setVolume(0f);
}
}
public void unmute() {
if (exoPlayer != null && exoPlayer.getAudioComponent() != null) {
exoPlayer.getAudioComponent().setVolume(1f);
}
}
public boolean hasAudioTrack() {
if (exoPlayer != null) {
TrackGroupArray trackGroupArray = exoPlayer.getCurrentTrackGroups();
if (trackGroupArray != null) {
for (int i = 0; i < trackGroupArray.length; i++) {
for (int j = 0; j < trackGroupArray.get(i).length; j++) {
String sampleMimeType = trackGroupArray.get(i).getFormat(j).sampleMimeType;
if (MediaUtil.isAudioType(sampleMimeType)) {
return true;
}
}
}
}
}
return false;
}
public boolean isInitialized() {
return exoPlayer != null;
}