Skip to content

Commit 5135ab1

Browse files
authored
Apply doris-android 5.x (vesper branch) (#381)
* feat: migrate doris-android from 3.x to 5.x (vesper branch)
1 parent 83908d0 commit 5135ab1

10 files changed

Lines changed: 319 additions & 196 deletions

File tree

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package com.brentvatne.entity;
2+
3+
import java.util.Objects;
4+
5+
public class ProgramInfo {
6+
7+
public static final ProgramInfo EMPTY = new ProgramInfo();
8+
9+
private String title;
10+
private long startDate;
11+
private long endDate;
12+
private String dateFormat;
13+
private String channelLogoUrl;
14+
15+
private ProgramInfo() {}
16+
17+
public ProgramInfo(
18+
String title,
19+
long startDate,
20+
long endDate,
21+
String dateFormat,
22+
String channelLogoUrl) {
23+
24+
this(title, startDate, endDate, channelLogoUrl);
25+
this.dateFormat = dateFormat;
26+
}
27+
28+
public ProgramInfo(
29+
String title,
30+
long startDate,
31+
long endDate,
32+
String channelLogoUrl) {
33+
34+
this.title = title;
35+
this.startDate = startDate;
36+
this.endDate = endDate;
37+
this.channelLogoUrl = channelLogoUrl;
38+
}
39+
40+
public String getTitle() {
41+
return title;
42+
}
43+
44+
public long getStartDate() {
45+
return startDate;
46+
}
47+
48+
public long getEndDate() {
49+
return endDate;
50+
}
51+
52+
public String getDateFormat() {
53+
return dateFormat;
54+
}
55+
56+
public String getChannelLogoUrl() {
57+
return channelLogoUrl;
58+
}
59+
60+
@Override
61+
public boolean equals(Object o) {
62+
if (this == o) return true;
63+
if (o == null || getClass() != o.getClass()) return false;
64+
ProgramInfo that = (ProgramInfo) o;
65+
return startDate == that.startDate
66+
&& endDate == that.endDate
67+
&& Objects.equals(title, that.title)
68+
&& Objects.equals(dateFormat, that.dateFormat)
69+
&& Objects.equals(channelLogoUrl, that.channelLogoUrl);
70+
}
71+
72+
@Override
73+
public int hashCode() {
74+
return Objects.hash(title, startDate, endDate, dateFormat, channelLogoUrl);
75+
}
76+
77+
@Override
78+
public String toString() {
79+
return "ProgramInfo{" +
80+
"title='" + title + '\'' +
81+
", startDate=" + startDate +
82+
", endDate=" + endDate +
83+
", dateFormat=" + dateFormat +
84+
", channelLogoUrl='" + channelLogoUrl + '\'' +
85+
'}';
86+
}
87+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.brentvatne.exoplayer;
2+
3+
import static androidx.media3.common.util.Assertions.checkNotNull;
4+
5+
import androidx.annotation.NonNull;
6+
import androidx.media3.common.AdViewProvider;
7+
8+
import com.diceplatform.doris.ExoDoris;
9+
import com.diceplatform.doris.common.ad.ui.AdChoicesClickViewRenderer;
10+
import com.diceplatform.doris.entity.AdType;
11+
import com.diceplatform.doris.entity.Source;
12+
import com.diceplatform.doris.ext.imacsai.ExoDorisImaCsaiExtension;
13+
import com.diceplatform.doris.ext.imacsailive.ExoDorisImaCsaiLiveExtension;
14+
import com.diceplatform.doris.ext.imadai.ExoDorisImaDaiExtension;
15+
import com.diceplatform.doris.ext.mediatailor.ssai.ExoDorisAmtSsaiExtension;
16+
import com.diceplatform.doris.ext.yossai.ExoDorisYoSsaiExtension;
17+
import com.diceplatform.doris.extension.ExoDorisExtension;
18+
import com.diceplatform.doris.service.ServiceContainer;
19+
20+
/**
21+
* A factory class that produces a test playlist data set.
22+
*/
23+
public final class ReactTVExoDorisExtensionFactory implements ExoDorisExtension.Provider {
24+
25+
private final AdViewProvider adViewProvider;
26+
private final AdChoicesClickViewRenderer adChoicesClickViewRenderer;
27+
28+
public ReactTVExoDorisExtensionFactory(AdViewProvider adViewProvider, AdChoicesClickViewRenderer adChoicesClickViewRenderer) {
29+
this.adViewProvider = adViewProvider;
30+
this.adChoicesClickViewRenderer = adChoicesClickViewRenderer;
31+
}
32+
33+
@NonNull
34+
@Override
35+
public ExoDorisExtension createExtension(
36+
@NonNull ExoDoris player,
37+
@NonNull ServiceContainer serviceContainer,
38+
@NonNull Source source) {
39+
AdType adType = Source.getAdType(source);
40+
ExoDorisExtension extension = ExoDoris.DUMMY_PLAYER_EXTENSION;
41+
if (adType == null) {
42+
return extension;
43+
}
44+
switch (adType) {
45+
case YO_SSAI:
46+
extension = new ExoDorisYoSsaiExtension(player, serviceContainer, checkNotNull(adViewProvider), adChoicesClickViewRenderer);
47+
break;
48+
case AMT_SSAI:
49+
extension = new ExoDorisAmtSsaiExtension(player, serviceContainer, checkNotNull(adViewProvider), adChoicesClickViewRenderer);
50+
break;
51+
case IMA_DAI:
52+
extension = new ExoDorisImaDaiExtension(player, serviceContainer, checkNotNull(adViewProvider));
53+
break;
54+
case IMA_CSAI_LIVE:
55+
extension = new ExoDorisImaCsaiLiveExtension(player, serviceContainer, checkNotNull(adViewProvider), null);
56+
break;
57+
case IMA_CSAI:
58+
extension = new ExoDorisImaCsaiExtension(player, serviceContainer, checkNotNull(adViewProvider));
59+
break;
60+
}
61+
return extension;
62+
}
63+
}
Lines changed: 4 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package com.brentvatne.exoplayer;
22

3-
import static androidx.media3.common.util.Assertions.checkNotNull;
4-
53
import android.content.Context;
64

75
import androidx.annotation.NonNull;
@@ -11,18 +9,9 @@
119

1210
import com.diceplatform.doris.ExoDoris;
1311
import com.diceplatform.doris.ExoDorisBuilder;
14-
import com.diceplatform.doris.common.ad.AdGlobalSettings;
1512
import com.diceplatform.doris.common.ad.ui.AdChoicesClickViewRenderer;
16-
import com.diceplatform.doris.entity.DorisAdEvent.AdType;
13+
import com.diceplatform.doris.entity.AdType;
1714
import com.diceplatform.doris.entity.TracksPolicy;
18-
import com.diceplatform.doris.ext.imacsai.ExoDorisImaCsaiBuilder;
19-
import com.diceplatform.doris.ext.imacsailive.ExoDorisImaCsaiLiveBuilder;
20-
import com.diceplatform.doris.ext.imadai.ExoDorisImaDaiBuilder;
21-
import com.diceplatform.doris.ext.mediatailor.ssai.ExoDorisAmtSsaiBuilder;
22-
import com.diceplatform.doris.ext.yossai.ExoDorisYoSsaiBuilder;
23-
import com.diceplatform.doris.plugin.Plugin;
24-
25-
import java.util.List;
2615

2716
public final class ReactTVExoDorisFactory {
2817

@@ -34,7 +23,6 @@ public ExoDoris createPlayer(
3423
long rewindIncrementMs,
3524
@Nullable AdViewProvider adViewProvider,
3625
@Nullable AdChoicesClickViewRenderer adChoicesClickViewRenderer,
37-
AdGlobalSettings adGlobalSettings,
3826
TracksPolicy tracksPolicy) {
3927
return createPlayer(
4028
context,
@@ -45,10 +33,8 @@ public ExoDoris createPlayer(
4533
forwardIncrementMs,
4634
rewindIncrementMs,
4735
null,
48-
null,
4936
adViewProvider,
5037
adChoicesClickViewRenderer,
51-
adGlobalSettings,
5238
tracksPolicy);
5339
}
5440

@@ -60,42 +46,21 @@ public ExoDoris createPlayer(
6046
int loadBufferMs,
6147
long forwardIncrementMs,
6248
long rewindIncrementMs,
63-
@Nullable List<Plugin> plugins,
6449
@Nullable Parameters.Builder parametersBuilder,
6550
@Nullable AdViewProvider adViewProvider,
6651
@Nullable AdChoicesClickViewRenderer adChoicesClickViewRenderer,
67-
AdGlobalSettings adGlobalSettings,
6852
@Nullable TracksPolicy tracksPolicy) {
69-
final ExoDorisBuilder builder;
70-
if (adType == AdType.YO_SSAI) {
71-
builder = new ExoDorisYoSsaiBuilder(context)
72-
.setAdViewProvider(checkNotNull(adViewProvider))
73-
.setAdChoicesClickViewRenderer(adChoicesClickViewRenderer)
74-
.setAdGlobalSettings(adGlobalSettings);
75-
} else if (adType == AdType.AMT_SSAI) {
76-
builder = new ExoDorisAmtSsaiBuilder(context)
77-
.setAdViewProvider(checkNotNull(adViewProvider))
78-
.setAdChoicesClickViewRenderer(adChoicesClickViewRenderer)
79-
.setAdGlobalSettings(adGlobalSettings);
80-
} else if (adType == AdType.IMA_DAI) {
81-
builder = new ExoDorisImaDaiBuilder(context).setAdViewProvider(checkNotNull(adViewProvider));
82-
} else if (adType == AdType.IMA_CSAI_LIVE) {
83-
builder = new ExoDorisImaCsaiLiveBuilder(context).setAdViewProvider(checkNotNull(adViewProvider));
84-
} else if (adType == AdType.IMA_CSAI) {
85-
builder = new ExoDorisImaCsaiBuilder(context).setAdViewProvider(checkNotNull(adViewProvider));
86-
} else {
87-
builder = new ExoDorisBuilder(context);
88-
}
8953

90-
return builder
54+
return new ExoDorisBuilder(context)
55+
.setEnableManifestScte35(adType == AdType.IMA_CSAI_LIVE)
9156
.setPlayWhenReady(playWhenReady)
9257
.setUserAgent(userAgent)
9358
.setLoadBufferMs(loadBufferMs)
9459
.setForwardIncrementMs(forwardIncrementMs)
9560
.setRewindIncrementMs(rewindIncrementMs)
96-
.setPlugins(plugins)
9761
.setParamsBuilder(parametersBuilder)
9862
.setTracksPolicy(tracksPolicy)
63+
.setPlayerExtensionProvider(new ReactTVExoDorisExtensionFactory(adViewProvider, adChoicesClickViewRenderer))
9964
.build();
10065
}
10166
}

0 commit comments

Comments
 (0)