[ANDROID] Fix android after merge

This commit is contained in:
Axel Vencatareddy
2022-11-09 14:26:39 +01:00
parent d5c245e675
commit 002f39181a
6 changed files with 69 additions and 1813 deletions

View File

@@ -31,6 +31,7 @@ import com.facebook.react.bridge.WritableArray;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.util.RNLog;
import com.google.ads.interactivemedia.v3.api.AdEvent;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.DefaultLoadControl;
import com.google.android.exoplayer2.DefaultRenderersFactory;
@@ -93,9 +94,13 @@ import com.google.android.exoplayer2.source.dash.manifest.AdaptationSet;
import com.google.android.exoplayer2.source.dash.manifest.Representation;
import com.google.android.exoplayer2.source.dash.manifest.Descriptor;
import com.google.android.exoplayer2.ext.ima.ImaAdsLoader;
import com.google.android.exoplayer2.source.ads.AdsMediaSource;
import java.net.CookieHandler;
import java.net.CookieManager;
import java.net.CookiePolicy;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -119,7 +124,8 @@ class ReactExoplayerView extends FrameLayout implements
BandwidthMeter.EventListener,
BecomingNoisyListener,
AudioManager.OnAudioFocusChangeListener,
DrmSessionEventListener {
DrmSessionEventListener,
AdEvent.AdEventListener {
public static final double DEFAULT_MAX_HEAP_ALLOCATION_PERCENT = 1;
public static final double DEFAULT_MIN_BACK_BUFFER_MEMORY_RESERVE = 0;
@@ -144,6 +150,7 @@ class ReactExoplayerView extends FrameLayout implements
private ExoPlayerView exoPlayerView;
private FullScreenPlayerView fullScreenPlayerView;
private ImaAdsLoader adsLoader;
private DataSource.Factory mediaDataSourceFactory;
private ExoPlayer player;
@@ -203,6 +210,7 @@ class ReactExoplayerView extends FrameLayout implements
private String drmLicenseUrl = null;
private String[] drmLicenseHeader = null;
private boolean controls;
private Uri adTagUrl;
// \ End props
// React
@@ -221,6 +229,9 @@ class ReactExoplayerView extends FrameLayout implements
switch (msg.what) {
case SHOW_PROGRESS:
if (player != null) {
if (isPlayingAd()) {
playerControlView.hide();
}
long pos = player.getCurrentPosition();
long bufferedDuration = player.getBufferedPercentage() * player.getDuration() / 100;
long duration = player.getDuration();
@@ -256,6 +267,8 @@ class ReactExoplayerView extends FrameLayout implements
this.config = config;
this.bandwidthMeter = config.getBandwidthMeter();
adsLoader = new ImaAdsLoader(this.themedReactContext, Uri.EMPTY);
createViews();
audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
@@ -263,6 +276,9 @@ class ReactExoplayerView extends FrameLayout implements
audioBecomingNoisyReceiver = new AudioBecomingNoisyReceiver(themedReactContext);
}
private boolean isPlayingAd() {
return player != null && player.isPlayingAd() && player.getPlayWhenReady();
}
@Override
public void setId(int id) {
@@ -380,7 +396,9 @@ class ReactExoplayerView extends FrameLayout implements
exoPlayerView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
togglePlayerControlVisibility();
if (!isPlayingAd()) {
togglePlayerControlVisibility();
}
}
});
@@ -604,6 +622,7 @@ class ReactExoplayerView extends FrameLayout implements
.setLoadControl(loadControl)
.build();
player.addListener(self);
adsLoader.setPlayer(player);
exoPlayerView.setPlayer(player);
audioBecomingNoisyReceiver.setListener(self);
bandwidthMeter.addEventListener(new Handler(), self);
@@ -634,11 +653,12 @@ class ReactExoplayerView extends FrameLayout implements
private void initializePlayerSource(ReactExoplayerView self, DrmSessionManager drmSessionManager) {
ArrayList<MediaSource> mediaSourceList = buildTextSources();
MediaSource videoSource = buildMediaSource(self.srcUri, self.extension, drmSessionManager);
MediaSource mediaSourceWithAds = new AdsMediaSource(videoSource, mediaDataSourceFactory, adsLoader, exoPlayerView);
MediaSource mediaSource;
if (mediaSourceList.size() == 0) {
mediaSource = videoSource;
mediaSource = mediaSourceWithAds;
} else {
mediaSourceList.add(0, videoSource);
mediaSourceList.add(0, mediaSourceWithAds);
MediaSource[] textSourceArray = mediaSourceList.toArray(
new MediaSource[mediaSourceList.size()]
);
@@ -816,6 +836,7 @@ class ReactExoplayerView extends FrameLayout implements
trackSelector = null;
player = null;
}
adsLoader.release();
progressHandler.removeMessages(SHOW_PROGRESS);
themedReactContext.removeLifecycleEventListener(this);
audioBecomingNoisyReceiver.removeListener();
@@ -938,7 +959,6 @@ class ReactExoplayerView extends FrameLayout implements
case AudioManager.AUDIOFOCUS_LOSS:
this.hasAudioFocus = false;
eventEmitter.audioFocusChanged(false);
pausePlayback();
audioManager.abandonAudioFocus(this);
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
@@ -1046,7 +1066,7 @@ class ReactExoplayerView extends FrameLayout implements
}
private void videoLoaded() {
if (loadVideoStarted) {
if (!player.isPlayingAd() && loadVideoStarted) {
loadVideoStarted = false;
if (audioTrackType != null) {
setSelectedAudioTrack(audioTrackType, audioTrackValue);
@@ -1416,6 +1436,12 @@ class ReactExoplayerView extends FrameLayout implements
mReportBandwidth = reportBandwidth;
}
public void setAdTagUrl(final Uri uri) {
adTagUrl = uri;
adsLoader = new ImaAdsLoader(this.themedReactContext, adTagUrl);
adsLoader = new ImaAdsLoader.Builder(this.themedReactContext).setAdEventListener(this).buildForAdTag(adTagUrl);
}
public void setRawSrc(final Uri uri, final String extension) {
if (uri != null) {
boolean isSourceEqual = uri.equals(srcUri);
@@ -1905,4 +1931,9 @@ class ReactExoplayerView extends FrameLayout implements
public void setSubtitleStyle(SubtitleStyle style) {
exoPlayerView.setSubtitleStyle(style);
}
@Override
public void onAdEvent(AdEvent adEvent) {
eventEmitter.receiveAdEvent(adEvent.getType().name());
}
}