Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
eb1dc508
authored
May 03, 2022
by
ibaker
Committed by
Ian Baker
May 09, 2022
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Opt some more bits of the main demo app into the unstable API
PiperOrigin-RevId: 446161354
parent
33b049c1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
46 additions
and
22 deletions
demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java
View file @
eb1dc508
...
@@ -178,7 +178,7 @@ public class IntentUtil {
...
@@ -178,7 +178,7 @@ public class IntentUtil {
headers
.
put
(
keyRequestPropertiesArray
[
i
],
keyRequestPropertiesArray
[
i
+
1
]);
headers
.
put
(
keyRequestPropertiesArray
[
i
],
keyRequestPropertiesArray
[
i
+
1
]);
}
}
}
}
@Nullable
UUID
drmUuid
=
Util
.
getDrmUuid
(
Util
.
castNonNull
(
drmSchemeExtra
)
);
@Nullable
UUID
drmUuid
=
Util
.
getDrmUuid
(
drmSchemeExtra
);
if
(
drmUuid
!=
null
)
{
if
(
drmUuid
!=
null
)
{
builder
.
setDrmConfiguration
(
builder
.
setDrmConfiguration
(
new
MediaItem
.
DrmConfiguration
.
Builder
(
drmUuid
)
new
MediaItem
.
DrmConfiguration
.
Builder
(
drmUuid
)
...
...
demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java
View file @
eb1dc508
...
@@ -90,7 +90,12 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -90,7 +90,12 @@ public class PlayerActivity extends AppCompatActivity
// For ad playback only.
// For ad playback only.
@Nullable
private
AdsLoader
clientSideAdsLoader
;
@Nullable
private
AdsLoader
clientSideAdsLoader
;
// TODO: Annotate this and serverSideAdsLoaderState below with @OptIn when it can be applied to
// fields (needs http://r.android.com/2004032 to be released into a version of
// androidx.annotation:annotation-experimental).
@Nullable
private
ImaServerSideAdInsertionMediaSource
.
AdsLoader
serverSideAdsLoader
;
@Nullable
private
ImaServerSideAdInsertionMediaSource
.
AdsLoader
serverSideAdsLoader
;
private
ImaServerSideAdInsertionMediaSource
.
AdsLoader
.
@MonotonicNonNull
State
private
ImaServerSideAdInsertionMediaSource
.
AdsLoader
.
@MonotonicNonNull
State
serverSideAdsLoaderState
;
serverSideAdsLoaderState
;
...
@@ -119,12 +124,7 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -119,12 +124,7 @@ public class PlayerActivity extends AppCompatActivity
startAutoPlay
=
savedInstanceState
.
getBoolean
(
KEY_AUTO_PLAY
);
startAutoPlay
=
savedInstanceState
.
getBoolean
(
KEY_AUTO_PLAY
);
startItemIndex
=
savedInstanceState
.
getInt
(
KEY_ITEM_INDEX
);
startItemIndex
=
savedInstanceState
.
getInt
(
KEY_ITEM_INDEX
);
startPosition
=
savedInstanceState
.
getLong
(
KEY_POSITION
);
startPosition
=
savedInstanceState
.
getLong
(
KEY_POSITION
);
Bundle
adsLoaderStateBundle
=
savedInstanceState
.
getBundle
(
KEY_SERVER_SIDE_ADS_LOADER_STATE
);
restoreServerSideAdsLoaderState
(
savedInstanceState
);
if
(
adsLoaderStateBundle
!=
null
)
{
serverSideAdsLoaderState
=
ImaServerSideAdInsertionMediaSource
.
AdsLoader
.
State
.
CREATOR
.
fromBundle
(
adsLoaderStateBundle
);
}
}
else
{
}
else
{
trackSelectionParameters
=
new
TrackSelectionParameters
.
Builder
(
/* context= */
this
).
build
();
trackSelectionParameters
=
new
TrackSelectionParameters
.
Builder
(
/* context= */
this
).
build
();
clearStartPosition
();
clearStartPosition
();
...
@@ -216,9 +216,7 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -216,9 +216,7 @@ public class PlayerActivity extends AppCompatActivity
outState
.
putBoolean
(
KEY_AUTO_PLAY
,
startAutoPlay
);
outState
.
putBoolean
(
KEY_AUTO_PLAY
,
startAutoPlay
);
outState
.
putInt
(
KEY_ITEM_INDEX
,
startItemIndex
);
outState
.
putInt
(
KEY_ITEM_INDEX
,
startItemIndex
);
outState
.
putLong
(
KEY_POSITION
,
startPosition
);
outState
.
putLong
(
KEY_POSITION
,
startPosition
);
if
(
serverSideAdsLoaderState
!=
null
)
{
saveServerSideAdsLoaderState
(
outState
);
outState
.
putBundle
(
KEY_SERVER_SIDE_ADS_LOADER_STATE
,
serverSideAdsLoaderState
.
toBundle
());
}
}
}
// Activity input
// Activity input
...
@@ -270,24 +268,20 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -270,24 +268,20 @@ public class PlayerActivity extends AppCompatActivity
return
false
;
return
false
;
}
}
boolean
preferExtensionDecoders
=
intent
.
getBooleanExtra
(
IntentUtil
.
PREFER_EXTENSION_DECODERS_EXTRA
,
false
);
RenderersFactory
renderersFactory
=
DemoUtil
.
buildRenderersFactory
(
/* context= */
this
,
preferExtensionDecoders
);
lastSeenTracks
=
Tracks
.
EMPTY
;
lastSeenTracks
=
Tracks
.
EMPTY
;
play
er
=
ExoPlayer
.
Builder
playerBuild
er
=
new
ExoPlayer
.
Builder
(
/* context= */
this
)
new
ExoPlayer
.
Builder
(
/* context= */
this
)
.
setRenderersFactory
(
renderersFactory
)
.
setMediaSourceFactory
(
createMediaSourceFactory
());
.
setMediaSourceFactory
(
createMediaSourceFactory
())
setRenderersFactory
(
.
build
();
playerBuilder
,
intent
.
getBooleanExtra
(
IntentUtil
.
PREFER_EXTENSION_DECODERS_EXTRA
,
false
));
player
=
playerBuilder
.
build
();
player
.
setTrackSelectionParameters
(
trackSelectionParameters
);
player
.
setTrackSelectionParameters
(
trackSelectionParameters
);
player
.
addListener
(
new
PlayerEventListener
());
player
.
addListener
(
new
PlayerEventListener
());
player
.
addAnalyticsListener
(
new
EventLogger
());
player
.
addAnalyticsListener
(
new
EventLogger
());
player
.
setAudioAttributes
(
AudioAttributes
.
DEFAULT
,
/* handleAudioFocus= */
true
);
player
.
setAudioAttributes
(
AudioAttributes
.
DEFAULT
,
/* handleAudioFocus= */
true
);
player
.
setPlayWhenReady
(
startAutoPlay
);
player
.
setPlayWhenReady
(
startAutoPlay
);
playerView
.
setPlayer
(
player
);
playerView
.
setPlayer
(
player
);
serverSideAdsLoader
.
setPlayer
(
player
);
configurePlayerWithServerSideAdsLoader
(
);
debugViewHelper
=
new
DebugTextViewHelper
(
player
,
debugTextView
);
debugViewHelper
=
new
DebugTextViewHelper
(
player
,
debugTextView
);
debugViewHelper
.
start
();
debugViewHelper
.
start
();
}
}
...
@@ -322,6 +316,17 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -322,6 +316,17 @@ public class PlayerActivity extends AppCompatActivity
.
setServerSideAdInsertionMediaSourceFactory
(
imaServerSideAdInsertionMediaSourceFactory
);
.
setServerSideAdInsertionMediaSourceFactory
(
imaServerSideAdInsertionMediaSourceFactory
);
}
}
private
void
setRenderersFactory
(
ExoPlayer
.
Builder
playerBuilder
,
boolean
preferExtensionDecoders
)
{
RenderersFactory
renderersFactory
=
DemoUtil
.
buildRenderersFactory
(
/* context= */
this
,
preferExtensionDecoders
);
playerBuilder
.
setRenderersFactory
(
renderersFactory
);
}
private
void
configurePlayerWithServerSideAdsLoader
()
{
serverSideAdsLoader
.
setPlayer
(
player
);
}
private
List
<
MediaItem
>
createMediaItems
(
Intent
intent
)
{
private
List
<
MediaItem
>
createMediaItems
(
Intent
intent
)
{
String
action
=
intent
.
getAction
();
String
action
=
intent
.
getAction
();
boolean
actionIsListView
=
IntentUtil
.
ACTION_VIEW_LIST
.
equals
(
action
);
boolean
actionIsListView
=
IntentUtil
.
ACTION_VIEW_LIST
.
equals
(
action
);
...
@@ -375,8 +380,7 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -375,8 +380,7 @@ public class PlayerActivity extends AppCompatActivity
if
(
player
!=
null
)
{
if
(
player
!=
null
)
{
updateTrackSelectorParameters
();
updateTrackSelectorParameters
();
updateStartPosition
();
updateStartPosition
();
serverSideAdsLoaderState
=
serverSideAdsLoader
.
release
();
releaseServerSideAdsLoader
();
serverSideAdsLoader
=
null
;
debugViewHelper
.
stop
();
debugViewHelper
.
stop
();
debugViewHelper
=
null
;
debugViewHelper
=
null
;
player
.
release
();
player
.
release
();
...
@@ -391,6 +395,11 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -391,6 +395,11 @@ public class PlayerActivity extends AppCompatActivity
}
}
}
}
private
void
releaseServerSideAdsLoader
()
{
serverSideAdsLoaderState
=
serverSideAdsLoader
.
release
();
serverSideAdsLoader
=
null
;
}
private
void
releaseClientSideAdsLoader
()
{
private
void
releaseClientSideAdsLoader
()
{
if
(
clientSideAdsLoader
!=
null
)
{
if
(
clientSideAdsLoader
!=
null
)
{
clientSideAdsLoader
.
release
();
clientSideAdsLoader
.
release
();
...
@@ -399,6 +408,21 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -399,6 +408,21 @@ public class PlayerActivity extends AppCompatActivity
}
}
}
}
private
void
saveServerSideAdsLoaderState
(
Bundle
outState
)
{
if
(
serverSideAdsLoaderState
!=
null
)
{
outState
.
putBundle
(
KEY_SERVER_SIDE_ADS_LOADER_STATE
,
serverSideAdsLoaderState
.
toBundle
());
}
}
private
void
restoreServerSideAdsLoaderState
(
Bundle
savedInstanceState
)
{
Bundle
adsLoaderStateBundle
=
savedInstanceState
.
getBundle
(
KEY_SERVER_SIDE_ADS_LOADER_STATE
);
if
(
adsLoaderStateBundle
!=
null
)
{
serverSideAdsLoaderState
=
ImaServerSideAdInsertionMediaSource
.
AdsLoader
.
State
.
CREATOR
.
fromBundle
(
adsLoaderStateBundle
);
}
}
private
void
updateTrackSelectorParameters
()
{
private
void
updateTrackSelectorParameters
()
{
if
(
player
!=
null
)
{
if
(
player
!=
null
)
{
trackSelectionParameters
=
player
.
getTrackSelectionParameters
();
trackSelectionParameters
=
player
.
getTrackSelectionParameters
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment