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
c905891d
authored
Feb 10, 2019
by
Arnold Szabo
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Taking into consideration the media's duration when updating the time bar
parent
a6c1dbe1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
33 additions
and
3 deletions
library/ui/src/main/java/com/google/android/exoplayer2/ui/DefaultTimeBar.java
library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java
library/ui/src/main/java/com/google/android/exoplayer2/ui/TimeBar.java
library/ui/src/main/java/com/google/android/exoplayer2/ui/DefaultTimeBar.java
View file @
c905891d
...
...
@@ -219,6 +219,8 @@ public class DefaultTimeBar extends View implements TimeBar {
private
@Nullable
long
[]
adGroupTimesMs
;
private
@Nullable
boolean
[]
playedAdGroups
;
private
int
densityDpi
;
/** Creates a new time bar. */
// Suppress warnings due to usage of View methods in the constructor.
@SuppressWarnings
(
"nullness:method.invocation.invalid"
)
...
...
@@ -242,6 +244,7 @@ public class DefaultTimeBar extends View implements TimeBar {
// Calculate the dimensions and paints for drawn elements.
Resources
res
=
context
.
getResources
();
DisplayMetrics
displayMetrics
=
res
.
getDisplayMetrics
();
densityDpi
=
displayMetrics
.
densityDpi
;
fineScrubYThreshold
=
dpToPx
(
displayMetrics
,
FINE_SCRUB_Y_THRESHOLD_DP
);
int
defaultBarHeight
=
dpToPx
(
displayMetrics
,
DEFAULT_BAR_HEIGHT_DP
);
int
defaultTouchTargetHeight
=
dpToPx
(
displayMetrics
,
DEFAULT_TOUCH_TARGET_HEIGHT_DP
);
...
...
@@ -447,6 +450,11 @@ public class DefaultTimeBar extends View implements TimeBar {
update
();
}
@Override
public
int
getTimeBarWidth
()
{
return
pxToDp
(
densityDpi
,
getWidth
());
}
// View methods.
@Override
...
...
@@ -835,4 +843,8 @@ public class DefaultTimeBar extends View implements TimeBar {
private
static
int
dpToPx
(
DisplayMetrics
displayMetrics
,
int
dps
)
{
return
(
int
)
(
dps
*
displayMetrics
.
density
+
0.5f
);
}
private
static
int
pxToDp
(
int
densityDpi
,
int
px
)
{
return
(
int
)
(
px
/
((
float
)
densityDpi
/
DisplayMetrics
.
DENSITY_DEFAULT
));
}
}
library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java
View file @
c905891d
...
...
@@ -196,6 +196,9 @@ public class PlayerControlView extends FrameLayout {
public
static
final
int
MAX_WINDOWS_FOR_MULTI_WINDOW_TIME_BAR
=
100
;
private
static
final
long
MAX_POSITION_FOR_SEEK_TO_PREVIOUS
=
3000
;
private
static
final
int
DEFAULT_UPDATE_DP
=
5
;
private
static
final
long
MIN_UPDATE_FREQUENCY_MS
=
50
;
private
static
final
long
MAX_UPDATE_FREQUENCY_MS
=
1000
;
private
final
ComponentListener
componentListener
;
private
final
View
previousButton
;
...
...
@@ -835,13 +838,21 @@ public class PlayerControlView extends FrameLayout {
if
(
playbackSpeed
<=
0.1f
)
{
delayMs
=
1000
;
}
else
if
(
playbackSpeed
<=
5
f
)
{
long
mediaTimeUpdatePeriodMs
=
1000
/
Math
.
max
(
1
,
Math
.
round
(
1
/
playbackSpeed
));
/*
long mediaTimeUpdatePeriodMs = 1000 / Math.max(1, Math.round(1 / playbackSpeed));
long mediaTimeDelayMs = mediaTimeUpdatePeriodMs - (position % mediaTimeUpdatePeriodMs);
if (mediaTimeDelayMs < (mediaTimeUpdatePeriodMs / 5)) {
mediaTimeDelayMs += mediaTimeUpdatePeriodMs;
}*/
int
timeBarWidth
=
timeBar
.
getTimeBarWidth
();
int
numberOfUpdates
=
timeBarWidth
/
DEFAULT_UPDATE_DP
;
long
mediaTimeDelayMs
=
duration
/
numberOfUpdates
;
if
(
mediaTimeDelayMs
<
MIN_UPDATE_FREQUENCY_MS
)
{
mediaTimeDelayMs
=
MIN_UPDATE_FREQUENCY_MS
;
}
else
if
(
mediaTimeDelayMs
>=
MAX_UPDATE_FREQUENCY_MS
)
{
mediaTimeDelayMs
=
MAX_UPDATE_FREQUENCY_MS
;
}
delayMs
=
playbackSpeed
==
1
?
mediaTimeDelayMs
:
(
long
)
(
mediaTimeDelayMs
/
playbackSpeed
);
delayMs
=
playbackSpeed
==
1
?
mediaTimeDelayMs
:
(
long
)
(
mediaTimeDelayMs
/
playbackSpeed
);
}
else
{
delayMs
=
200
;
}
...
...
library/ui/src/main/java/com/google/android/exoplayer2/ui/TimeBar.java
View file @
c905891d
...
...
@@ -97,6 +97,13 @@ public interface TimeBar {
void
setAdGroupTimesMs
(
@Nullable
long
[]
adGroupTimesMs
,
@Nullable
boolean
[]
playedAdGroups
,
int
adGroupCount
);
/**
* Get width of time bar in dps
*
* @return Width of time bar in dps
*/
int
getTimeBarWidth
();
/**
* Listener for scrubbing events.
*/
...
...
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