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
685bb772
authored
Mar 30, 2020
by
andrewlewis
Committed by
Oliver Woodman
Mar 30, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Move PlaybackStatsListener to non-deprecated state events
PiperOrigin-RevId: 303764399
parent
378593f5
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
46 additions
and
33 deletions
library/core/src/main/java/com/google/android/exoplayer2/analytics/PlaybackStatsListener.java
library/core/src/test/java/com/google/android/exoplayer2/analytics/PlaybackStatsListenerTest.java
library/core/src/main/java/com/google/android/exoplayer2/analytics/PlaybackStatsListener.java
View file @
685bb772
...
@@ -173,8 +173,8 @@ public final class PlaybackStatsListener
...
@@ -173,8 +173,8 @@ public final class PlaybackStatsListener
if
(
isSeeking
)
{
if
(
isSeeking
)
{
tracker
.
onSeekStarted
(
eventTime
,
/* belongsToPlayback= */
true
);
tracker
.
onSeekStarted
(
eventTime
,
/* belongsToPlayback= */
true
);
}
}
tracker
.
onPlay
erStateChanged
(
tracker
.
onPlay
backStateChanged
(
eventTime
,
playbackState
,
/* belongsToPlayback= */
true
);
eventTime
,
playWhenReady
,
playbackState
,
/* belongsToPlayback= */
true
);
tracker
.
onPlayWhenReadyChanged
(
eventTime
,
playWhenReady
,
/* belongsToPlayback= */
true
);
tracker
.
onIsSuppressedChanged
(
eventTime
,
isSuppressed
,
/* belongsToPlayback= */
true
);
tracker
.
onIsSuppressedChanged
(
eventTime
,
isSuppressed
,
/* belongsToPlayback= */
true
);
tracker
.
onPlaybackSpeedChanged
(
eventTime
,
playbackSpeed
);
tracker
.
onPlaybackSpeedChanged
(
eventTime
,
playbackSpeed
);
playbackStatsTrackers
.
put
(
session
,
tracker
);
playbackStatsTrackers
.
put
(
session
,
tracker
);
...
@@ -230,8 +230,7 @@ public final class PlaybackStatsListener
...
@@ -230,8 +230,7 @@ public final class PlaybackStatsListener
EventTime
startEventTime
=
Assertions
.
checkNotNull
(
sessionStartEventTimes
.
remove
(
session
));
EventTime
startEventTime
=
Assertions
.
checkNotNull
(
sessionStartEventTimes
.
remove
(
session
));
if
(
automaticTransition
)
{
if
(
automaticTransition
)
{
// Simulate ENDED state to record natural ending of playback.
// Simulate ENDED state to record natural ending of playback.
tracker
.
onPlayerStateChanged
(
tracker
.
onPlaybackStateChanged
(
eventTime
,
Player
.
STATE_ENDED
,
/* belongsToPlayback= */
false
);
eventTime
,
/* playWhenReady= */
true
,
Player
.
STATE_ENDED
,
/* belongsToPlayback= */
false
);
}
}
tracker
.
onFinished
(
eventTime
);
tracker
.
onFinished
(
eventTime
);
PlaybackStats
playbackStats
=
tracker
.
build
(
/* isFinal= */
true
);
PlaybackStats
playbackStats
=
tracker
.
build
(
/* isFinal= */
true
);
...
@@ -244,16 +243,27 @@ public final class PlaybackStatsListener
...
@@ -244,16 +243,27 @@ public final class PlaybackStatsListener
// AnalyticsListener implementation.
// AnalyticsListener implementation.
@Override
@Override
public
void
onPlayerStateChanged
(
public
void
onPlaybackStateChanged
(
EventTime
eventTime
,
@Player
.
State
int
state
)
{
EventTime
eventTime
,
boolean
playWhenReady
,
@Player
.
State
int
playbackState
)
{
playbackState
=
state
;
sessionManager
.
updateSessions
(
eventTime
);
for
(
String
session
:
playbackStatsTrackers
.
keySet
())
{
boolean
belongsToPlayback
=
sessionManager
.
belongsToSession
(
eventTime
,
session
);
playbackStatsTrackers
.
get
(
session
)
.
onPlaybackStateChanged
(
eventTime
,
playbackState
,
belongsToPlayback
);
}
}
@Override
public
void
onPlayWhenReadyChanged
(
EventTime
eventTime
,
boolean
playWhenReady
,
@Player
.
PlayWhenReadyChangeReason
int
reason
)
{
this
.
playWhenReady
=
playWhenReady
;
this
.
playWhenReady
=
playWhenReady
;
this
.
playbackState
=
playbackState
;
sessionManager
.
updateSessions
(
eventTime
);
sessionManager
.
updateSessions
(
eventTime
);
for
(
String
session
:
playbackStatsTrackers
.
keySet
())
{
for
(
String
session
:
playbackStatsTrackers
.
keySet
())
{
boolean
belongsToPlayback
=
sessionManager
.
belongsToSession
(
eventTime
,
session
);
boolean
belongsToPlayback
=
sessionManager
.
belongsToSession
(
eventTime
,
session
);
playbackStatsTrackers
playbackStatsTrackers
.
get
(
session
)
.
get
(
session
)
.
onPlay
erStateChanged
(
eventTime
,
playWhenReady
,
playbackState
,
belongsToPlayback
);
.
onPlay
WhenReadyChanged
(
eventTime
,
playWhenReady
,
belongsToPlayback
);
}
}
}
}
...
@@ -521,31 +531,40 @@ public final class PlaybackStatsListener
...
@@ -521,31 +531,40 @@ public final class PlaybackStatsListener
}
}
/**
/**
* Notifies the tracker of a play
er state change event, including all player state changes while
* Notifies the tracker of a play
back state change event, including all playback state changes
* the playback is not in the foreground.
*
while
the playback is not in the foreground.
*
*
* @param eventTime The {@link EventTime}.
* @param eventTime The {@link EventTime}.
* @param playWhenReady Whether the playback will proceed when ready.
* @param state The current {@link Player.State}.
* @param playbackState The current {@link Player.State}.
* @param belongsToPlayback Whether the {@code eventTime} belongs to the current playback.
* @param belongsToPlayback Whether the {@code eventTime} belongs to the current playback.
*/
*/
public
void
onPlayerStateChanged
(
public
void
onPlaybackStateChanged
(
EventTime
eventTime
,
EventTime
eventTime
,
@Player
.
State
int
state
,
boolean
belongsToPlayback
)
{
boolean
playWhenReady
,
playerPlaybackState
=
state
;
@Player
.
State
int
playbackState
,
if
(
state
!=
Player
.
STATE_IDLE
)
{
boolean
belongsToPlayback
)
{
this
.
playWhenReady
=
playWhenReady
;
playerPlaybackState
=
playbackState
;
if
(
playbackState
!=
Player
.
STATE_IDLE
)
{
hasFatalError
=
false
;
hasFatalError
=
false
;
}
}
if
(
playbackState
==
Player
.
STATE_IDLE
||
playbackS
tate
==
Player
.
STATE_ENDED
)
{
if
(
state
==
Player
.
STATE_IDLE
||
s
tate
==
Player
.
STATE_ENDED
)
{
isInterruptedByAd
=
false
;
isInterruptedByAd
=
false
;
}
}
maybeUpdatePlaybackState
(
eventTime
,
belongsToPlayback
);
maybeUpdatePlaybackState
(
eventTime
,
belongsToPlayback
);
}
}
/**
/**
* Notifies the tracker of a play when ready change event, including all play when ready changes
* while the playback is not in the foreground.
*
* @param eventTime The {@link EventTime}.
* @param playWhenReady Whether the playback will proceed when ready.
* @param belongsToPlayback Whether the {@code eventTime} belongs to the current playback.
*/
public
void
onPlayWhenReadyChanged
(
EventTime
eventTime
,
boolean
playWhenReady
,
boolean
belongsToPlayback
)
{
this
.
playWhenReady
=
playWhenReady
;
maybeUpdatePlaybackState
(
eventTime
,
belongsToPlayback
);
}
/**
* Notifies the tracker of a change to the playback suppression (e.g. due to audio focus loss),
* Notifies the tracker of a change to the playback suppression (e.g. due to audio focus loss),
* including all updates while the playback is not in the foreground.
* including all updates while the playback is not in the foreground.
*
*
...
...
library/core/src/test/java/com/google/android/exoplayer2/analytics/PlaybackStatsListenerTest.java
View file @
685bb772
...
@@ -43,12 +43,9 @@ public final class PlaybackStatsListenerTest {
...
@@ -43,12 +43,9 @@ public final class PlaybackStatsListenerTest {
PlaybackStatsListener
playbackStatsListener
=
PlaybackStatsListener
playbackStatsListener
=
new
PlaybackStatsListener
(
/* keepHistory= */
true
,
/* callback= */
null
);
new
PlaybackStatsListener
(
/* keepHistory= */
true
,
/* callback= */
null
);
playbackStatsListener
.
onPlayerStateChanged
(
playbackStatsListener
.
onPlaybackStateChanged
(
TEST_EVENT_TIME
,
Player
.
STATE_BUFFERING
);
TEST_EVENT_TIME
,
/* playWhenReady= */
true
,
Player
.
STATE_BUFFERING
);
playbackStatsListener
.
onPlaybackStateChanged
(
TEST_EVENT_TIME
,
Player
.
STATE_READY
);
playbackStatsListener
.
onPlayerStateChanged
(
playbackStatsListener
.
onPlaybackStateChanged
(
TEST_EVENT_TIME
,
Player
.
STATE_ENDED
);
TEST_EVENT_TIME
,
/* playWhenReady= */
true
,
Player
.
STATE_READY
);
playbackStatsListener
.
onPlayerStateChanged
(
TEST_EVENT_TIME
,
/* playWhenReady= */
true
,
Player
.
STATE_ENDED
);
@Nullable
PlaybackStats
playbackStats
=
playbackStatsListener
.
getPlaybackStats
();
@Nullable
PlaybackStats
playbackStats
=
playbackStatsListener
.
getPlaybackStats
();
assertThat
(
playbackStats
).
isNotNull
();
assertThat
(
playbackStats
).
isNotNull
();
...
@@ -60,12 +57,9 @@ public final class PlaybackStatsListenerTest {
...
@@ -60,12 +57,9 @@ public final class PlaybackStatsListenerTest {
PlaybackStatsListener
playbackStatsListener
=
PlaybackStatsListener
playbackStatsListener
=
new
PlaybackStatsListener
(
/* keepHistory= */
false
,
/* callback= */
null
);
new
PlaybackStatsListener
(
/* keepHistory= */
false
,
/* callback= */
null
);
playbackStatsListener
.
onPlayerStateChanged
(
playbackStatsListener
.
onPlaybackStateChanged
(
TEST_EVENT_TIME
,
Player
.
STATE_BUFFERING
);
TEST_EVENT_TIME
,
/* playWhenReady= */
true
,
Player
.
STATE_BUFFERING
);
playbackStatsListener
.
onPlaybackStateChanged
(
TEST_EVENT_TIME
,
Player
.
STATE_READY
);
playbackStatsListener
.
onPlayerStateChanged
(
playbackStatsListener
.
onPlaybackStateChanged
(
TEST_EVENT_TIME
,
Player
.
STATE_ENDED
);
TEST_EVENT_TIME
,
/* playWhenReady= */
true
,
Player
.
STATE_READY
);
playbackStatsListener
.
onPlayerStateChanged
(
TEST_EVENT_TIME
,
/* playWhenReady= */
true
,
Player
.
STATE_ENDED
);
@Nullable
PlaybackStats
playbackStats
=
playbackStatsListener
.
getPlaybackStats
();
@Nullable
PlaybackStats
playbackStats
=
playbackStatsListener
.
getPlaybackStats
();
assertThat
(
playbackStats
).
isNotNull
();
assertThat
(
playbackStats
).
isNotNull
();
...
...
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