Commit graph

600 commits

Author SHA1 Message Date
tonihei
d4e1904604 Rollback of 483a350e84
*** Original commit ***

Suppress warnings in preparation for Checker Framework 3.7.1 upgrade.

LSC: go/checker-lsc

Tested:
    TAP train for global presubmit queue
    http://test/OCL:342788973:BASE:342817196:1605636478036:6c558c0c

***

PiperOrigin-RevId: 343895651
2020-11-24 16:02:45 +00:00
bachinger
aec3e458d8 Use onEvents in PlayerNotificationManager
This saves a few lines of code and is nicer. We already did make sure to update the notification only once by posting because of b/145521438.

#exofixit

PiperOrigin-RevId: 343852256
2020-11-24 16:01:49 +00:00
olly
6c31e34528 Use onEvents in PlayerControlView/StyledPlayerControlView
#exofixit

PiperOrigin-RevId: 343821736
2020-11-24 16:01:29 +00:00
olly
b16cf5941e Rollback of 8d84a50fa1
*** Original commit ***

Update Styled non bottom buttons to be borderless.

This requires the parent of the background to draw and have padding large enough to support the size of the ripple.

The bottom buttons must remained bordered as the space around them is constrained.

***

PiperOrigin-RevId: 343531411
2020-11-23 10:49:00 +00:00
olly
2714fb0241 Remove custom speed from StyledPlayerControlView
Real apps probably aren't going to be allowing playback speed to be
set to anything other than the options listed in their UI, and so
this is not worth the complexity.

It also violates the idea that the UI should look the same regardless
of when the player is set on the view, since if it's set and then the
playback speed is changed to a listed option then the custom speed
remains, where-as if the speed is changed to a listed option and then
it's set, the custom speed will not be shown.

PiperOrigin-RevId: 343260450
2020-11-19 17:12:51 +00:00
olly
0191febbe6 Fix fastforward and rewind color tinting and text alignment
#minor-release
Issue: #7898
PiperOrigin-RevId: 343251455
2020-11-19 17:12:25 +00:00
tonihei
44009ea686 Rollback of fa6e01312b
*** Original commit ***

Suppress warnings in preparation for Checker Framework 3.7.1 upgrade.

***

PiperOrigin-RevId: 343085407
2020-11-18 18:40:22 +00:00
olly
755f5b7d76 Suppress warnings in preparation for Checker Framework 3.7.1 upgrade.
PiperOrigin-RevId: 342999709
2020-11-18 18:40:10 +00:00
olly
483a350e84 Suppress warnings in preparation for Checker Framework 3.7.1 upgrade.
PiperOrigin-RevId: 342999390
2020-11-18 18:40:06 +00:00
olly
8381b9ff43 Update Styled Player settings dialogs to respect RTL.
PiperOrigin-RevId: 342672124
2020-11-17 13:50:45 +00:00
insun
ee3eba07ac Increase touch target height of timebar in StyledPlayerControlView
This change also introduces gravity attribute to DefaultTimeBar.

PiperOrigin-RevId: 342573167
2020-11-16 16:50:12 +00:00
olly
8d84a50fa1 Update Styled non bottom buttons to be borderless.
This requires the parent of the background to draw and have padding large enough to support the size of the ripple.

The bottom buttons must remained bordered as the space around them is constrained.

PiperOrigin-RevId: 342162231
2020-11-13 14:55:29 +00:00
olly
b1eef00b80 Fix incorrect IntDef usage
#minor-release

PiperOrigin-RevId: 341668326
2020-11-11 09:50:59 +00:00
bachinger
b03df4e8b5 Add dispatchPrepare(player) to ControlDispatcher
Issue: #7882
PiperOrigin-RevId: 341394254
2020-11-11 09:49:32 +00:00
ibaker
702e5cfb3e Fix or suppress nullness warnings introduced by checkerframework 3.7.0
PiperOrigin-RevId: 340826532
2020-11-06 16:33:59 +00:00
insun
6abee66504 Fix bottom area to have even paddings and make seekbar slimmer.
Also removed unused thumb resources.

PiperOrigin-RevId: 338184661
2020-10-21 10:24:14 +01:00
olly
0ad33116b6 Simplify artwork selection in PlayerView
PiperOrigin-RevId: 338056357
2020-10-21 10:24:04 +01:00
ibaker
2371b024dd Switch to an 'api' dependency on Guava
The 'implementation' dependency causes problems when resolving
ListenableFuture in contexts that also include the
com.google.guava:listenablefuture:1.0 dependency.

Issue: #7905
Issue: #7997
Issue: #7993
PiperOrigin-RevId: 337093024
2020-10-17 01:34:15 +01:00
olly
5e1c96ad99 Fix a couple of StyledPlayerControlView bugs
1. The first time the player controls are are made visible,
   there is no animation.
2. The first time the player controls are made visible, the
   "select tracks" button isn't displayed. When tapping to
   subsequently hide the player controls, the button briefly
   becomes visible and then is hidden again. This bug is due
   to state in StyledPlayerControlViewLayoutManager being
   out of sync, resulting in StyledPlayerControlView's
   onVisibilityChange not being called properly.

After this change both of these issues should be resolved.

PiperOrigin-RevId: 336704031
2020-10-13 16:28:17 +01:00
andrewlewis
c21529def3 Update translations for UI module
This should fix gradle errors like: "warn: removing resource
com.google.android.exoplayer2.demo:string/exo_controls_fastforward_by_amount_description
without required default value."

PiperOrigin-RevId: 336670827
2020-10-13 16:28:08 +01:00
insun
850510ac68 Expand bottom button's height and extend greyed background area to seekbar
Adjusted the bottom layout of StyledPlayerControlView :
- Enlarged bottom button's height to make tapping easier.
- Extended greyed background area to upper edge of seekbar.
- Gave padding between bottom edge of the overall layout and bottom buttons.
- Reduced horizontal margins between bottom buttons.

PiperOrigin-RevId: 336041160
2020-10-13 16:27:10 +01:00
insun
7228b2d718 Show overflow button only when there is no enough space
Previously, the overflow button was always shown at the bottom in StyledPlayerControlView
and hided the settings cog even when there is enough space.

With this change, the settings cog moves out from overflow and
the overflow button is shown only when the buttom space is not enough.

PiperOrigin-RevId: 336029179
2020-10-13 16:27:00 +01:00
andrewlewis
ac782235ca Fix miscellaneous nits/typos
PiperOrigin-RevId: 335642909
2020-10-06 16:57:31 +00:00
samrobinson
a552e35f6a Add getter and callbacks for static metadata retrieval.
Issue:#7266
PiperOrigin-RevId: 335416280
2020-10-06 14:31:32 +01:00
samrobinson
c95e43d9bd Do not require subtitleButton in custom layouts of StyledPlayerView
Every other subtitleButton has an if not null check, but does not force non null.

Issue: #7962
PiperOrigin-RevId: 334124323
2020-09-30 11:55:18 +01:00
Oliver Woodman
19a0258bac Merge pull request #7798 from yoobi:trackSelectionView
PiperOrigin-RevId: 333751261
2020-09-25 17:49:12 +01:00
bachinger
ea57e5d28b Always pass true for ongoing with the first notification
ISSUE: #7977
PiperOrigin-RevId: 333726625
2020-09-25 16:34:37 +01:00
olly
cef3e3cac1 Cleanup layout XMLs to be consistent with others
PiperOrigin-RevId: 333023580
2020-09-25 16:29:25 +01:00
olly
f16f8e59ff Replace duration strings with plurals
PiperOrigin-RevId: 332014290
2020-09-16 17:00:42 +01:00
olly
cdcb30ed21 Exclude Guava transitive annotation dependencies
PiperOrigin-RevId: 331148067
2020-09-11 16:01:15 +01:00
insun
222ba22b10 Fix not to show repeat button when its mode is NONE.
PiperOrigin-RevId: 330627047
2020-09-09 09:42:00 +01:00
insun
ea158dcdb0 Apply styled widget's bug fixes to legacy widget
- Prevent buffering when clicking ffwd button at the end of stream
- Set VR button disabled when listener is not registered

PiperOrigin-RevId: 330039336
2020-09-07 20:43:10 +01:00
insun
f68faff30b Set VR button disabled when listener is not registered (styled view)
PiperOrigin-RevId: 329851964
2020-09-07 20:42:33 +01:00
olly
b5a4dc8f36 Fix dispatch of play when in IDLE or ENDED
PiperOrigin-RevId: 329722282
2020-09-07 20:42:04 +01:00
insun
f31411b128 Revise Play/Pause button toggling logic
This CL fixes two bugs:
- Play/pause button toggling looked inconsistent when playback fails.
  When player state goes into idle, play button should dispatch
  playwhenready again.
- Clicking play button at the end of stream should restart playback.
  But previously it changed playwhenready state and so playback has
  been paused. This CL fix it.

PiperOrigin-RevId: 329675660
2020-09-07 20:41:27 +01:00
insun
be103ac553 Add padding to styled widget's settings items
PiperOrigin-RevId: 329671522
2020-09-07 20:41:18 +01:00
olly
5c24d1ccea Clean up unnecessary use of full package name
PiperOrigin-RevId: 329666401
2020-09-07 20:41:09 +01:00
insun
f68fc3e701 Prevent buffering when clicking ffwd button at the end of stream
PiperOrigin-RevId: 329634001
2020-09-07 20:40:32 +01:00
bachinger
0045d20d2c Document how to set the priority on API level above 25
Issue: #7820
PiperOrigin-RevId: 328917063
2020-09-07 20:39:08 +01:00
bachinger
8a8a1517ec Handle KEYCODE_HEADSETHOOK as alias of KEYCODE_MEDIA_PLAY_PAUSE
ISSUE: #7813
PiperOrigin-RevId: 328910220
2020-09-07 20:38:59 +01:00
Yo Ob
869981a360
Merge branch 'dev-v2' into trackSelectionView 2020-08-28 11:36:59 +02:00
tonihei
237cb9df54 Merge pull request #7804 from yoobi:TrackSelectionDialogBuilderTheme
PiperOrigin-RevId: 328726246
2020-08-27 14:41:28 +00:00
andrewlewis
74c493f51e Add back support for setting audio pitch
To play slow motion streams where the audio has been recorded at
slower speeds, it is necessary to be able to resample (rather than
time-stretch) the audio. This change undeprecates back the previously
deprecated PlaybackParameters class to allow apps to set pitch.

PiperOrigin-RevId: 328703116
2020-08-27 12:06:41 +01:00
Yoni Obadia
c9b4b98103 Review: Fix initSortedTrack to keep all groups in the TrackGroupArray 2020-08-27 12:19:56 +02:00
Yoni Obadia
551b6d65ae Review: Simplify getSortedIndexFromInitialTrackGroup 2020-08-27 10:15:17 +02:00
Yoni Obadia
ed58280d23 Review: Update according to review 2020-08-27 09:46:30 +02:00
Yoni Obadia
0176422f0b Review: Update according to review 2020-08-26 19:07:47 +02:00
Yoni Obadia
425bd2d801 improvement: get already existing sortingTrackGroups if exists 2020-08-26 14:31:44 +02:00
Yoni Obadia
88d7587ca7 dev: add setting theme for TrackSelectionDialogBuilder 2020-08-26 11:40:48 +02:00
Yoni Obadia
181676d950 dev: adding sorting for TrackSelectionDialog and TrackSelectionDialogBuilder 2020-08-24 15:13:21 +02:00
insun
74f788afc3 Improve a11y in minimal mode
Previously, the fullscreen button and timebar has been overlapped in minimal mode

PiperOrigin-RevId: 327606728
2020-08-21 12:51:15 +01:00
insun
b853978a91 Fix bug to show 'play' button at the end of stream
PiperOrigin-RevId: 327158791
2020-08-18 08:11:54 +01:00
insun
333ccedf80 Improve error message and correct reference to proper layout
PiperOrigin-RevId: 326944292
2020-08-17 16:13:43 +01:00
insun
602d880841 Fix StyledControlView's minimal mode bug and setShow{*}Button bug
There were two bugs in StyledPlayerControlView:
- Center icons are shown when toggling control view in minimal mode.
- `StyledControlView#setShow{*}Button` methods and corresponding
  `set_show_*_button` attributes didn't work properly.

This CL fixes bugs by controlling the buttons' visibility in one place,
StyledPlayerControlViewLayoutManager.

PiperOrigin-RevId: 326567213
2020-08-17 16:12:30 +01:00
insun
454a38c366 Increase touch target size and margins between icons
PiperOrigin-RevId: 326423935
2020-08-17 16:11:44 +01:00
insun
cda35f6677 Make play/pause button to reflect getPlayWhenReady state
Previously, it refelects isPlaying() and it makes the button to seem
unresponsive when playback error occurs.

PiperOrigin-RevId: 326396570
2020-08-17 16:10:59 +01:00
insun
b95c984d16 Cleanup unused ui resources and code
PiperOrigin-RevId: 326390725
2020-08-17 16:10:40 +01:00
insun
8661876960 Remove unnessary resources
1) As we don't display metadata (title) removed titlebar.
2) Removed exo_ic_{forward,rewind}_30.xml which are not used.

PiperOrigin-RevId: 325195605
2020-08-07 19:01:55 +01:00
insun
b26d578ff3 Fix bug that clicking didn't show up controls at the beginning
StyledLayoutManager#isFullyVisibility() was wrong and
so hiding/showing logic didn't work properly.

PiperOrigin-RevId: 324996446
2020-08-07 19:01:45 +01:00
olly
5c879ac8f8 Final string import for 2.12
PiperOrigin-RevId: 324579230
2020-08-07 18:58:51 +01:00
insun
f99023e887 Makes controls initially hidden
Also, there was a bug that controls are always shown at the beginning
even when controlview's hide() is called.

PiperOrigin-RevId: 323300617
2020-07-27 23:59:16 +01:00
insun
6fb28a8dc9 Hide fullscreen button if no listener is registered
PiperOrigin-RevId: 322912266
2020-07-24 10:48:43 +01:00
insun
cf2a58e6dc Fix styled ui's documents
#exofixit

PiperOrigin-RevId: 322854029
2020-07-24 10:48:25 +01:00
olly
132c9d15e3 UI module string cleanup
PiperOrigin-RevId: 322323784
2020-07-24 10:43:07 +01:00
olly
899a78fca9 StyledPlayerControlView: Some cleanup
PiperOrigin-RevId: 322317638
2020-07-24 10:42:48 +01:00
insun
63ca2b00fb Resolve styled controls crash on pre-API 21
When building a demo app without recent gradle (ex. blaze)
it crashes.

PiperOrigin-RevId: 322313886
2020-07-24 10:42:39 +01:00
andrewlewis
9594aa45ff Move functionality from DemoApplication to DemoUtil
https://developer.android.com/reference/android/app/Application recommends
against subclassing application.

PiperOrigin-RevId: 322163812
2020-07-24 10:41:27 +01:00
olly
0cd15d9158 Proactively check listener arguments are non-null
PiperOrigin-RevId: 322143359
2020-07-24 10:40:24 +01:00
tonihei
953db7898e Make dependency on AndroidX appcompat optional for dialog builder.
The dependency is only used to create a dialog in
TrackSelectionDialogBuilder that is compatible with newer styling
options.

This dependendy adds over 500Kb to the apk (even if unused) and we
shoudn't force this on an app. Instead make the dependency optional by
automatically falling back to the platform version if the AndroidX one
doesn't exist.

Issue: #7357
PiperOrigin-RevId: 322143005
2020-07-24 10:40:15 +01:00
insun
bcf218da60 Import translated strings
PiperOrigin-RevId: 321762840
2020-07-24 10:38:08 +01:00
ibaker
437d1b6e9a Migrate usages of deprecated Player#set/getPlaybackParameters()
PiperOrigin-RevId: 321166822
2020-07-24 10:33:36 +01:00
ibaker
23d680a4b4 Suppress deprecation warnings in deprecated places
PiperOrigin-RevId: 320970814
2020-07-24 10:30:53 +01:00
olly
f205539616 Use lambdas where possible
PiperOrigin-RevId: 320960833
2020-07-13 17:00:44 +01:00
kimvde
92437f3a0f Remove some occurrences of dummy
Remove occurrences in comments and private fields.

ISSUE: #7565
PiperOrigin-RevId: 320948364
2020-07-13 17:00:21 +01:00
ibaker
cdfee89181 Use CSS inheritance for background-color in WebViewSubtitleOutput
CSS background-color isn't inherited to inner HTML elements by default:
https://developer.mozilla.org/en-US/docs/Web/CSS/background-color

But Android Span styling assumes an outer BackgroundColorSpan will
affect inner spans. This usually doesn't make a difference, because
HTML elements are transparent by default, so there's an implicit
inheritance by just being able to see through to the 'outer' element
underneath. However this doesn't work if the inner element sits outside
the bounding box of the outer element, e.g. <rt> (ruby text, sits above/below)
or a <span> with font-size > 100%.
END_PUBLIC

Demo of <rt> and font-size problems: http://go/cpl/ruby-backgrounds/1
Demo of CSS inheritance: http://go/cpl/css-inheritance/1

PiperOrigin-RevId: 320915999
2020-07-13 14:04:20 +01:00
andrewlewis
245459a34a Fix raw type
PiperOrigin-RevId: 320909448
2020-07-13 14:04:11 +01:00
insun
5e50e110a4 Mark currently selected subtitle track in track list
Previously, the automatically selected subtitle track
has not been marked (with check mark) in subtitle track list,
just like audio track.

But, in subtitle track option UI, there is no 'auto' option,
which is different from audio track selection menu.

This CL marks the auto selected subtitle track name in the cc list.

PiperOrigin-RevId: 320802575
2020-07-13 14:04:02 +01:00
andrewlewis
3214851fbb Migrate off deprecated IMA SDK APIs
AdDisplayContainer now takes the video ad player at construction time,
and obstructions are registered/unregistered via a new method. Also
'content complete' is now notified via ad callbacks rather than the
AdsLoader.

PiperOrigin-RevId: 320567666
2020-07-13 14:02:52 +01:00
insun
9a42141e66 Toggles subtitle button's image and content description accordingly
PiperOrigin-RevId: 320323388
2020-07-09 08:04:16 +00:00
insun
b8e9f19b37 Add document for show_subtitle_button attribute
This also removes unused deprecated methods.

PiperOrigin-RevId: 320141729
2020-07-08 13:56:12 +01:00
insun
4fc45b92c0 Increase char limits for some string translations
And also replaced "Click" with "Tap" for CC button descriptions.

PiperOrigin-RevId: 319455553
2020-07-03 09:03:24 +01:00
Oliver Woodman
ab348c045c Merge pull request #7568 from juankysoriano:subtitles-font-size-bug
PiperOrigin-RevId: 319223173
2020-07-03 09:02:13 +01:00
tonihei
f8217140d7 Add missing null check.
The system services may return a null value if the service is
not available. Guard against this by falling back to default values.

PiperOrigin-RevId: 319187882
2020-07-03 09:01:37 +01:00
insun
22802506cd Minor changes regarding animation_enabled in StyledPlayerControlView.
- Removed unnecessary private method
- Revised document for animation_enabled attribute
- Added setAnimationEnabled/isAnimationEnabled in StyledPlayerControlView

PiperOrigin-RevId: 319054648
2020-07-03 09:01:03 +01:00
insun
a3bbcf3395 Add StyledPlayerView and StyledPlayerControlView into ui/
Moved ui2/ code and resources into ui/

PiperOrigin-RevId: 318984707
2020-07-03 09:00:10 +01:00
Juanky Soriano
5c096acc29 Use default text size if captioning manager is disabled
This fixes an issue where, even if captioning manager is disabled, the latest used captioning manager preference
related to text size is being applied.

In order to replicate:
1. Go to Captioning Preferences under device Settings and enable it
2. Change the text size to "very large"
3. Observe the selected text size is used for subtitles, for example in Youtube
4. Go to Captioning Preferences under device Settings and disable it
5. Observe the text size used for subtitles does not come back to normal, stays on "very large"
2020-07-01 00:15:31 -05:00
insun
d5f029315c Cleanup deprecated SimpleExoPlayerView and PlaybackControlView
PiperOrigin-RevId: 318152038
2020-06-26 11:14:13 +01:00
ibaker
54eccd3893 Change WebViewSubtitleOutput to use em not % for line offsets
The existing code moves a multi-line cue box by multiples of the height
of the whole cue box (incorrect), rather than multiples of the first
line of text (correct). These two are equivalent for single-line cues,
which is why I didn't initially spot the problem.

PiperOrigin-RevId: 318036793
2020-06-26 11:13:41 +01:00
ibaker
06c17f5152 Redefine numeric Cue.line in terms of viewport lines, ignore lineAnchor
Numerical lines conceptually map to a grid of lines in the viewport,
with the Cue text lines being aligned to one of the viewport lines.

It doesn't make sense to position a single-line cue differently based
on lineAnchor when it's expected to 'snap' to a particular line on the
viewport grid. So we redefine the position to be in terms of the cue
lines rather than the bounds of the cue box.

It's also not possible to always handle ANCHOR_TYPE_MIDDLE when
lineType=NUMBER (as it relies on the number of lines in the cue being
odd), so it's easier to ignore lineAnchor completely.
PiperOrigin-RevId: 318034664
2020-06-26 11:13:33 +01:00
tonihei
4138e28d62 Move common gradle setup to a setting file.
This removes a lot of duplication from the module configuration,
avoids divergence, and makes sure that only the important differences
to the default are visible in each module file.

PiperOrigin-RevId: 318024823
2020-06-26 11:13:25 +01:00
samrobinson
836babd5d6 Replace usages of Charset.forName with Guava Charsets.
PiperOrigin-RevId: 317672619
2020-06-23 11:07:43 +01:00
olly
5aa8a7a507 Prevent shutter closing for within-window seeks to unprepared periods
Issue: #5507
PiperOrigin-RevId: 315512207
2020-06-11 10:10:18 +01:00
olly
c759b5b1a9 Add option to hide Prev/Rwnd/Ffwd/Next buttons
Issue: #7410
PiperOrigin-RevId: 315480798
2020-06-09 16:05:44 +01:00
tonihei
f099f570e6 Update TrackSelectionDialogBuilder to use androidx compat Dialog.
This ensure style themes are correctly applied.

issue:#7357
PiperOrigin-RevId: 313145345
2020-05-27 18:59:51 +01:00
ibaker
710374f83a Override WebViewSubtitleOutput.onLayout()
Some of the CSS font sizes are derived from the current view height, if
this calculation is done before the view has been measured then a zero
view height results in a zero px font size and no visible text.

This can happen when the view type is changed (and so the
WebViewSubtitleOutput has been recently added to the SubtitleView
ViewGroup).

PiperOrigin-RevId: 311552052
2020-05-14 22:24:58 +01:00
ibaker
ba5871dd0e Add support for CaptionStyle.edgeStyle to WebViewSubtitleOutput
This is the last piece to bring feature parity between
WebViewSubtitleOutput and CanvasSubtitleOutput.

PiperOrigin-RevId: 311325749
2020-05-14 22:23:46 +01:00
ibaker
1c3c7c58ab Rename SubtitleTextView to CanvasSubtitleOutput
It displays images too, and in fact it's used exclusively to display
images in SubtitleWebView. It also doesn't use a TextView - so all round
a slightly confusing name.

Also rename SubtitleWebView to WebViewSubtitleOutput to match the same
pattern.

PiperOrigin-RevId: 311312758
2020-05-14 22:23:28 +01:00
ibaker
0fb4ba788f Switch SubtitleWebView to use single-quotes in generated HTML
The current state is inconsistent with SpannedToHtmlConverter, it seems
they might as well agree on quoting strategy.

PiperOrigin-RevId: 310926683
2020-05-14 22:20:27 +01:00
ibaker
99ebeaed17 Change the SubtitleView.Output interface
This allows properties to propagate when switching view types
(e.g. bottomPaddingFraction).

It also allows the style-stripping code to be pushed up to SubtitleView
and therefore shared.

PiperOrigin-RevId: 310353534
2020-05-14 22:18:37 +01:00
ibaker
c4c826fbfe Add StrikethroughSpan support to SpannedToHtmlConverter
PiperOrigin-RevId: 310332708
2020-05-14 22:18:18 +01:00